Size: a a a

2020 August 10

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Богдан
Грубо говоря mobx это всего лишь решение тормозов реакта (трекает как компоненты связаны с переменными чтобы вызвать потом перерендер только нужных компонентов).
Как без mobx вызвать обновление компонентов когда меняется состояние? Да просто храним состояние в глобальной переменной window.state = { count: 0 } а потом при изменении просто вызываем перерендер всего приложения
<div onClick={()=>{
 window.state.count++;
 actualizeDOM();
}}>
{window.state.count}
</div>

....

const actualizeDOM = ()=>{
 ReactDOM.render(<App/>, document.body)
}
И если бы реакт не тормозил бы при диффе всего дерева приложения на каждое изменение состояния то mobx был бы и не нужен (а кеширование вычислений в компютедах нужно прям очень редко)
ну да, это и есть разница в целях

хорошо что у нас есть возможность узнать про такие нюансы концепции в деталях
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
эффектор предлагает события как first class citizens, это lingua franca распределённых вычислений, наконец можно перенимать богатый опыт индустрии напрямую
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
MessageStore → Store
MessageEvent → Event
RequestReply / Service Activator → Effect
MessageFilterevent.filter({fn})
Durable Subscriberdomain.onCreate*
Publish-Subscribe Channelstore.on
Remote Procedure Invocationeffect.sid
DynamicRouterguard
Aggregator / Idempotent ReceivercreateStoreObject / sample
MessageTranslatorevent.map
RecipientList → spread
ContentBasedRouter → split
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
это аналогии из книги enterprise integrations patterns в эффекторе
источник

c⁣

createStore<🦉>... in ☄️ effector
🚀🔬 🚀🔬🚀🔬
MessageStore → Store
MessageEvent → Event
RequestReply / Service Activator → Effect
MessageFilterevent.filter({fn})
Durable Subscriberdomain.onCreate*
Publish-Subscribe Channelstore.on
Remote Procedure Invocationeffect.sid
DynamicRouterguard
Aggregator / Idempotent ReceivercreateStoreObject / sample
MessageTranslatorevent.map
RecipientList → spread
ContentBasedRouter → split
Effector-doc канал?)
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
я хз вообще 😳 я просто этот пост нашёл только в переписке с @murgut
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
🚀🔬 🚀🔬🚀🔬
эффектор предлагает события как first class citizens, это lingua franca распределённых вычислений, наконец можно перенимать богатый опыт индустрии напрямую
по этой причине эффектор нужен даже если бы реакт не тормозил: голые реактивные обсерваблы — состояния без эвентов — это ничем не лучше голых реактивных стримов — эвентов без состояний, поэтому потребовалось решение, интегрирующее обе части реактивности вместе на уровне концепции
источник

DS

Dmitriy Shuleshov in ☄️ effector
Богдан
Грубо говоря mobx это всего лишь решение тормозов реакта (трекает как компоненты связаны с переменными чтобы вызвать потом перерендер только нужных компонентов).
Как без mobx вызвать обновление компонентов когда меняется состояние? Да просто храним состояние в глобальной переменной window.state = { count: 0 } а потом при изменении просто вызываем перерендер всего приложения
<div onClick={()=>{
 window.state.count++;
 actualizeDOM();
}}>
{window.state.count}
</div>

....

const actualizeDOM = ()=>{
 ReactDOM.render(<App/>, document.body)
}
И если бы реакт не тормозил бы при диффе всего дерева приложения на каждое изменение состояния то mobx был бы и не нужен (а кеширование вычислений в компютедах нужно прям очень редко)
Мне нравится вот это "если бы не тормозил дифф"
источник

Б

Богдан in ☄️ effector
🚀🔬 🚀🔬🚀🔬
по этой причине эффектор нужен даже если бы реакт не тормозил: голые реактивные обсерваблы — состояния без эвентов — это ничем не лучше голых реактивных стримов — эвентов без состояний, поэтому потребовалось решение, интегрирующее обе части реактивности вместе на уровне концепции
А на каких кейсах нужен эффектор даже если бы реакт не тормозил? Я вот разрабатывал разные по сложности приложения и еще ни разу не сталкивался с чем-то вроде асинхронного графа событий из-за чего мне нужен был бы эффектор. Мне всегда хватало mobx-а а в некоторых проектах даже mobx был не нужен (там не было больших списков или жирного интерефейса и реакт вполне себе успевал делать дифф всего дерева ui)
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Богдан
А на каких кейсах нужен эффектор даже если бы реакт не тормозил? Я вот разрабатывал разные по сложности приложения и еще ни разу не сталкивался с чем-то вроде асинхронного графа событий из-за чего мне нужен был бы эффектор. Мне всегда хватало mobx-а а в некоторых проектах даже mobx был не нужен (там не было больших списков или жирного интерефейса и реакт вполне себе успевал делать дифф всего дерева ui)
напоминаю что в документации эффектора нет слова «граф» принципиально, поэтому констатация «ни разу не сталкивался с графом» тут ни к чему
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
преимущества эффектора перечислены по пунктам прямо в readme и на главной доки
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
если необходимости отделить события от обрабатываемых данных ещё не было, если в проектах ещё не сталкивался с асинхронными запросами, если задумываешься о том, чтобы перейти на window.state, то с принципами и концепциями эффектора можешь ознакомиться на будущее
источник

NF

Nikita Fedorov in ☄️ effector
🚀🔬 🚀🔬🚀🔬
преимущества эффектора перечислены по пунктам прямо в readme и на главной доки
как и его недостатки)
источник

c⁣

createStore<🦉>... in ☄️ effector
В forest появился block, это компонент?
источник

NF

Nikita Fedorov in ☄️ effector
Nikita Fedorov
как и его недостатки)
все почему то забывают об этом нюансе)
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Nikita Fedorov
как и его недостатки)
ну я не стал заканчивать речь фразой «то значит тебе это  ещё не нужно»
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
createStore<🦉> ⁣
В forest появился block, это компонент?
block инициализирует содержимое функции при создании, чтобы не начинать добавлять новые юниты в оригинал уже после форка
источник

🅅🄺

🅅aleriy 🄺obzar in ☄️ effector
@xbgnx никто не мешает тебе юзать эффектор сторы и ивенты, но не юзать при этом useStore, а вместо этого использовать твой любимый способ window.store.watch(() => React.render(<App />))
:)))
источник

ЕГ

Егор Гуща in ☄️ effector
🚀🔬 🚀🔬🚀🔬
я хз вообще 😳 я просто этот пост нашёл только в переписке с @murgut
Я туда материал для доки собираю 😅
источник

🅅🄺

🅅aleriy 🄺obzar in ☄️ effector
главная же цель эффектора - дать возможность декларативного описания вычислений всех процессов приложения
источник