Size: a a a

2020 June 28

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
нет, наоборот, ничего не нужно, достаточно сказать форку в App заполниться нашими значениями со страницы
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
🚀🔬 🚀🔬🚀🔬
принцип примерно такой)

const fork = () => {
 const scope = {
   user: 'guest',
   getUserFx() {
     scope.user = 'alice'
   }
 }
 return scope
}
const fork = ({values = {}} = {}) => {
 const scope = {
   user: values.user || 'guest',
   getUserFx() {
     scope.user = 'alice'
   }
 }
 return scope
}
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
то есть форк и гидрация очень похожи, на самом деле
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Timofey Goncharov
То есть нужен какой-то синглтон для форка на уровне приложения?
короче если не будешь вешать ватчеры на сторы напрямую (`store.watch` vs store.updates.watch, второе можно), что в любом случае при серверном рендеринге не очень логично, то код App становится ещё проще
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Timofey Goncharov
То есть нужен какой-то синглтон для форка на уровне приложения?
источник

TG

Timofey Goncharov in ☄️ effector
Спать пойду. Завтра видимо все пойму и пофикшу)
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
короче достаточно стереть лишнее из кода App 😃

https://t.me/effector_ru/136104
источник

TG

Timofey Goncharov in ☄️ effector
Вот те раз 😃
источник

TG

Timofey Goncharov in ☄️ effector
Завтра ещё посмотрю как оно себя ведёт при переходах по роутам. Не затаилось ли там какого то подвоха. Как то все слишком просто получается)
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Timofey Goncharov
Вот те раз 😃
1) App вешает провайдера на приложение чтобы получать данные через useStore, это не может сделать никто другой, поэтому внутри App будет форк
2) getServerSideProps выполняет эффекты для генерации данных для страницы, это не может сделать никто другой, поэтому внутри getServerSideProps будет форк
3) каждый форк по умолчанию начинает всё с нуля, он не знает, что происходило в других форках, у него есть только дефолты, они пустые
4) передавать форки между getServerSideProps и App нельзя
5) передавать данные в форк можно, точно так же как в hydrate
6) передавать сериализуемые данные между getServerSideProps и App тоже можно

всё это вместе позволяет одному форку продолжить с того места, на котором остановился другой
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
то есть сделали форк в gsSSP → зафетчили данные → сериализовали → прокинули в App → десериализовали в новый форк → раздали в реакт-часть приложения
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
🚀🔬 🚀🔬🚀🔬
то есть сделали форк в gsSSP → зафетчили данные → сериализовали → прокинули в App → десериализовали в новый форк → раздали в реакт-часть приложения
слишком просто потому что реакт появляется лишь на последнем шаге 😃
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
но да, подвох может быть 😄 но я надеюсь что не будет, детали реализации fork проектировались и оттачивались почти год)

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

m

makoven in ☄️ effector
Когда прочитал весь сайт effector.now.sh:
habr.com/en/post/508550/
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
makoven
Когда прочитал весь сайт effector.now.sh:
habr.com/en/post/508550/
😅😅
источник

NM

Nikolay 🦸‍♂️🍔 Morozo... in ☄️ effector
https://github.com/budarin/use-react-redux искал инфу по зомби чилдам и наткнулся на коннектор редакса к реакту без зомбей (как заявляется)
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Nikolay 🦸‍♂️🍔 Morozov
https://github.com/budarin/use-react-redux искал инфу по зомби чилдам и наткнулся на коннектор редакса к реакту без зомбей (как заявляется)
спойлер ReactDOM.unstable_batchedUpdates не спасает от зомби 🧟‍♂️
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
зомби-чайлды и прочие асинхронные упыри 🌚
источник

m

makoven in ☄️ effector
Подскажите как красивее сделать в терминах эффектора? Есть интерфейс, описывающий удаленную сущность

interface SatanEntity {
 getSoul(id: number): Promise<Soul>,
 addSoul(soul: Soul): Promise<number>,
}

Интерфейсу подчиняются и серверная сторона и клиентская. Сейчас на клиенте этот интерфейс реализуется у класса, так что в результате можно записать

const satanEntity = new SatanEntity('/rpc/satan');
const soul42 = await satanEntity.getSoul(42);

Если уйти от классов, есть ли возможность красиво выразить такую сущность в эффекторе, чтобы она при этом имплементила интерфейс?
источник

MC

Mark Cholak in ☄️ effector
Интересное приложение ты пишешь 👀
источник