Size: a a a

2020 June 07

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
не должно быть лишних пересчётов изначально)

но проверку на равенство можно делать в on, подписать один стор на другой и аналогично не возвращать ничего если обновление не требуется
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
а store.map в функцию передаёт второй аргумент, это текущее значение вычисленного стора


https://effector.now.sh/docs/api/effector/store#mapfn-state-state-laststate-t--t
источник

ZS

Znacovean Simion in ☄️ effector
🚀🔬 🚀🔬🚀🔬
а как это выглядит в коде?
примерно так
проблема в моем кейсе с react-hook-form
у него вотчер левый который срабатывает даже тогда когда данные в объекте слежки не изменились
из-за этого мой евент отрабатывает слишком часто
обновляется стейт
стейт служит источником истины для компонента
тот заново по кругу запускает весь процесс..
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Znacovean Simion
примерно так
проблема в моем кейсе с react-hook-form
у него вотчер левый который срабатывает даже тогда когда данные в объекте слежки не изменились
из-за этого мой евент отрабатывает слишком часто
обновляется стейт
стейт служит источником истины для компонента
тот заново по кругу запускает весь процесс..
а значение fields само по себе остаётся одинаковым? ===
источник

l

lllla in ☄️ effector
@ZeroBias как ты смотришь на то, чтобы в effector-vue можно было возвращать только объект?

effector: {
 $store1,
 $store,2
}

effector() {
 return {…}
}
источник

l

lllla in ☄️ effector
Но не так:

effector() {
 return $store
}
источник

ZS

Znacovean Simion in ☄️ effector
🚀🔬 🚀🔬🚀🔬
а значение fields само по себе остаётся одинаковым? ===
нет
оно меняется
но не так как ожидалось
методы append, remove от библиотеки пушать или удаляют из него значения (добавление дополнительного инпута например)
и только в эти моменты и происходят рекалькуляции моего useEffect если fields поставить в зависимость

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

l

lllla in ☄️ effector
lllla
Но не так:

effector() {
 return $store
}
проблема этого подхода, что он создает ключ state и нужно к данным обращаться через this.state
источник

ZS

Znacovean Simion in ☄️ effector
источник

ZS

Znacovean Simion in ☄️ effector
вот так useEffect как я написал выше отработает ровно в момент когда у fields будет изменен length (судя по всему)
а точечные праки в значениях уже добавленных полей только их вотчером(
незнаю как работаю с формами ребята нынче
кейс геморный попался
а либо казалось бы в топах
источник

ZS

Znacovean Simion in ☄️ effector
думаю создать отдельный стор но как это делу поможет - незнаю
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Znacovean Simion
думаю создать отдельный стор но как это делу поможет - незнаю
просто есть useGate, он проверит объект через shallow compare, и если поля не изменились, то не будет апдейта его стора, автоматически
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
lllla
проблема этого подхода, что он создает ключ state и нужно к данным обращаться через this.state
хорошо, а почему он должен быть запрещён?)
источник

l

lllla in ☄️ effector
1. как-то не явно (мне кажается)
2. он не типизирован (и хз, можно ли)
источник

l

lllla in ☄️ effector
там идет в коде:
this[key] = somethings
источник

l

lllla in ☄️ effector
effector: { $counter }
effector() { return {$counter} }

this.$counter


вот так же выглядит логично, не?
источник

l

lllla in ☄️ effector
а тут:

effector() {return $counter}

и уже нужно обращаться через this.state
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
lllla
1. как-то не явно (мне кажается)
2. он не типизирован (и хз, можно ли)
это проблемы) это не первые проблемы и не последние, это не повод всё сносить; для начала можно например подробнее осветить в документации альтернативные подходы)
источник

TG

Timofey Goncharov in ☄️ effector
а что для effector @types нет?
источник

l

lllla in ☄️ effector
Timofey Goncharov
а что для effector @types нет?
Есть)
источник