Size: a a a

Reatom — стейт-менеджер

2020 September 22

a

artalar in Reatom — стейт-менеджер
сек
источник

a

artalar in Reatom — стейт-менеджер
artalar
function createShallowMemoSelector(selector) {
 let cacheI;
 let cacheIKeys;
 let cacheO;

 return (input) => {
   if (!cacheI) {
     cacheIKeys = Object.keys((cacheI = input));
     return (cacheO = selector(input));
   }
   const iKeys = Object.keys(input);

   if (
     cacheIKeys.length === iKeys.length &&
     iKeys.every((k) => Object.is(input[k], cacheI[k]))
   ) {
     return cacheO;
   }

   cacheI = input;
   cacheIKeys = iKeys;
   return (cacheO = selector(input));
 };
}
обновил
источник

a

artalar in Reatom — стейт-менеджер
источник

И

Илья in Reatom — стейт-менеджер
artalar
обновил
спасибо
источник
2020 September 23

И

Илья in Reatom — стейт-менеджер
@artalar не пойму а почему рендер просходит? результат функции такой-же(но конечно массив пересоздан), selected тот же
источник

И

Илья in Reatom — стейт-менеджер
Мы вчера говорили про кэш - с ним тоже самое происходит
источник

И

Илья in Reatom — стейт-менеджер
Но логично в голове что не должен быть ререндер хм
источник

И

Илья in Reatom — стейт-менеджер
Даже так -
источник

И

Илья in Reatom — стейт-менеджер
Хм - даже через ref сделал чтобы не менялся и все равно все рендерится -
источник

И

Илья in Reatom — стейт-менеджер
@artalar need help, или наставление что делать - прям работа встала а был настрой копать щас это все 🙁
источник

NS

Nikita Stenin in Reatom — стейт-менеджер
Илья
@artalar не пойму а почему рендер просходит? результат функции такой-же(но конечно массив пересоздан), selected тот же
Если itemsAtom изменился, то селектор будет вызван, а так как из селектора возвращается новый массив, то будет ререндер. Если ничего не напутал
источник

И

Илья in Reatom — стейт-менеджер
Nikita Stenin
Если itemsAtom изменился, то селектор будет вызван, а так как из селектора возвращается новый массив, то будет ререндер. Если ничего не напутал
Да но результат не меняется селектора (
источник

И

Илья in Reatom — стейт-менеджер
я даже пробовал так - один фиг ререндер
источник

NS

Nikita Stenin in Reatom — стейт-менеджер
Илья
Да но результат не меняется селектора (
isEqual я так понимаю делает глубокое сравнение. А в reatom сравнение происходит по ссылке, а селектор всегда возвращает новый массив, даже если элементы остались те же
источник

И

Илья in Reatom — стейт-менеджер
Nikita Stenin
isEqual я так понимаю делает глубокое сравнение. А в reatom сравнение происходит по ссылке, а селектор всегда возвращает новый массив, даже если элементы остались те же
ниже в примере один инстанс один и тот же массив
источник

NS

Nikita Stenin in Reatom — стейт-менеджер
Илья
ниже в примере один инстанс один и тот же массив
return paths; - это всегда новый массив
источник

И

Илья in Reatom — стейт-менеджер
Nikita Stenin
return paths; - это всегда новый массив
я стрелками показал
источник

И

Илья in Reatom — стейт-менеджер
ааа
источник

И

Илья in Reatom — стейт-менеджер
сек
источник

И

Илья in Reatom — стейт-менеджер
блин точняк
источник