Size: a a a

JavaScript — русскоговорящее сообщество

2021 January 18

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
#define true false
источник

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
Almaz Kham
как объекту петя добавить ключ age и вернуть новый users?
новый вообще новый или новый имеется в виду обновленный?
источник

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
вот, кстати, еще одна вещь, по которой я не люблю js
источник

JT

John Travolta in JavaScript — русскоговорящее сообщество
Denys Mikhalenko
Вы не одиноки в этом мнении, поэтому изобрели TypeScript )
так дело таки в языке или в программисте?)
источник

AK

Almaz Kham in JavaScript — русскоговорящее сообщество
Alexey Ermakov
вот, кстати, еще одна вещь, по которой я не люблю js
новый, для редакса..
источник

IS

Ilya Sinkin in JavaScript — русскоговорящее сообщество
Almaz Kham
как объекту петя добавить ключ age и вернуть новый users?
users.find(({ name }) => name === 'Петя').age = 10;

users;
источник

IS

Ilya Sinkin in JavaScript — русскоговорящее сообщество
сам напиши красивее, мне лень
источник

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
Almaz Kham
новый, для редакса..
[...spread operator], например
есть библиотека immer - можно мутировать любую сущность - она вернёт новую ссылку
источник

AP

Anton Permyakov in JavaScript — русскоговорящее сообщество
Almaz Kham
как объекту петя добавить ключ age и вернуть новый users?
users.map(user => user.name === 'Петя' ? { ...user, age: 10 } : user);
источник

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
а так бы вместо передачи по ссылке (&array) (или указателя на него *array)
передавали бы по значению (array) и не запаривались над тем, как immutable штуки делать для редакса :)
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Тут же весь смысл именно в том, чтобы по ссылке передавать
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Ссылку сравнил и знаешь, изменилось чего или нет
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
А по значению пришлось бы весь массив перепроверять, да еще и хранить прошлую версию
источник

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
сам факт вызова диспатча можно считать сигналом обновления :)
если, конечно, не написано диспатчей, которые ничего не меняют :)
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
обновления чего?
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
все приложение перерендеривать на каждый диспатч?
источник

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
нет, просто иметь отдельный сигнал о том, что где обновилось
state tree updated started at: 0xbadf00d
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
ну так не узнаешь, что именно обновилось
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
придется либо хранить старую копию и сравнивать полностью все дерево, чтобы перерендерить только изменившиеся компоненты, либо тупо рендерить вообще все каждый раз, когда произошло любой изменение
источник

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
Denys Mikhalenko
придется либо хранить старую копию и сравнивать полностью все дерево, чтобы перерендерить только изменившиеся компоненты, либо тупо рендерить вообще все каждый раз, когда произошло любой изменение
ссылка(казатель) может быть на любую сущность внутри стейта
отдали указатель на корень - обновили всё
отдали на некий объект внутри - обновилось то, что зависит от данных в этом кусочке

в принципе, тут для многих и то, что сейчас предоставляет язык зачастую сложно
адреса, указатели, оффсеты и прочее - вообще дичь будет
источник