Size: a a a

2020 October 14

DS

Dmitriy Shuleshov in ☄️ effector
Там серия статей
источник

yv

yumaa verdin in ☄️ effector
createStore<🦉> ⁣
@yumauri можешь скинуть свою серию статей?
быстрей меня скинули)
источник

DS

Dmitriy Shuleshov in ☄️ effector
yumaa verdin
быстрей меня скинули)
Уважаем труд преподавателей🌚
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Dmitry Plyaskin
а можете объяснить как работает step? стало интересно по разбираться в исходниках
каждый юнит эффектора и каждая связь между ними — это ноды графа. каждая нода графа — это пайплайн по обработке данных. step — это группа методов, которые создают шаги обработки данных. основные методы это compute, filter и run. все три принимают объект с полем fn, который в последствии будет вызываться в рантайме.

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

run — то же самое но для функций с сайд-эффектами, в нём вызываются ватчи и эффекты

filter — это метод который на основании результата выполнения функции прерывает выполнение ветки
источник

NS

Nick Shevrov in ☄️ effector
Nick Shevrov
А в чем персистентность?
persistent data structure is a data structure that always preserves the previous version of itself when it is modified


Ну т.е. вместо того, что ты полностью клонируешь объекта localStorage, ты работаешь с ним как с деревом? Зачем вообще нужна ссылка на прошлый объект?
А, я понял, это защита от того, что другая вкладка поменяет данные в ls и ss. На самом деле тут о том, что твоя вкладка напрямую не взаимодействует с ls/ss.
источник

DP

Dmitry Plyaskin in ☄️ effector
🚀🔬 🚀🔬🚀🔬
каждый юнит эффектора и каждая связь между ними — это ноды графа. каждая нода графа — это пайплайн по обработке данных. step — это группа методов, которые создают шаги обработки данных. основные методы это compute, filter и run. все три принимают объект с полем fn, который в последствии будет вызываться в рантайме.

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

run — то же самое но для функций с сайд-эффектами, в нём вызываются ватчи и эффекты

filter — это метод который на основании результата выполнения функции прерывает выполнение ветки
а что это за метод, как я понял, тут данные из стора достаются?
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
🚀🔬 🚀🔬🚀🔬
каждый юнит эффектора и каждая связь между ними — это ноды графа. каждая нода графа — это пайплайн по обработке данных. step — это группа методов, которые создают шаги обработки данных. основные методы это compute, filter и run. все три принимают объект с полем fn, который в последствии будет вызываться в рантайме.

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

run — то же самое но для функций с сайд-эффектами, в нём вызываются ватчи и эффекты

filter — это метод который на основании результата выполнения функции прерывает выполнение ветки
const node = createNode({
 node: [
   step.compute({
     fn: x => x + 1
   }),
   step.filter({
     fn: x => x % 2 === 0
   }),
   step.run({
     fn(x) {
       console.log(x)
     }
   })
 ]
})

launch(node, 1)
// => 2

launch(node, 2)
// no reaction

const event = createEvent()

// subscribe custom node to event
event.graphite.next.push(node)

event(1)
// => 2

event(2)
// => no reaction

// add transformation to event pipeline
event.graphite.seq.push(
 step.compute({
   fn: x => x - 1
 })
)

event(2)
// => 2
источник

З

Завтра in ☄️ effector
кстати, step экспортируется эффектором?
источник

DP

Dmitry Plyaskin in ☄️ effector
Завтра
кстати, step экспортируется эффектором?
да
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Dmitry Plyaskin
а что это за метод, как я понял, тут данные из стора достаются?
да) все ноды заранее декларативно описывают какие данные им требуются, так как далее на этом строятся оптимизации, поддержка ssr и работоспособность forest

запись на скрине читается как «при выполнении данного шага прочитать данные из рефа стора в регистр a». регистров есть три — a, b и value, они все доступны в третьем аргументе функций, передаваемых в fn методов compute, run и filter
источник

m

mg901 in ☄️ effector
Aleksandr Osipov
Эх вот бы ещё SSR... а может и не надо, отвлекать внимание
я сделаю отдельную ветку с SSR и опишу это в readme.
источник

🚀🚀

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

запись на скрине читается как «при выполнении данного шага прочитать данные из рефа стора в регистр a». регистров есть три — a, b и value, они все доступны в третьем аргументе функций, передаваемых в fn методов compute, run и filter
темплейты фореста — это иерархические наборы страниц с такими вот рефами. чтобы знать, какие рефы нужно создать для инстанса темплейта (какие данные используются в нём), форест просто явно анализирует все созданные в темплейты юниты и определяет, какие данные ему нужны. к примеру, мап стора из замыкания выше приведёт к тому, что форест дойдёт до step.mov в котором упоминается реф стора и будет копировать его при запуске
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
короче говоря, механизм с рефами и step.mov позволяет точно знать количество данных необходимых для работы. не «вот эти вот данные плюс ещё что-то недоступное, заныканное в замыкании», а в точности, до единой переменной
источник

🚀🚀

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

🚀🚀

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

DP

Dmitry Plyaskin in ☄️ effector
я тут эксперемнитровал с mov и поймал ошибку, основывался на attach, что тут не так?
источник

DP

Dmitry Plyaskin in ☄️ effector
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Dmitry Plyaskin
я тут эксперемнитровал с mov и поймал ошибку, основывался на attach, что тут не так?
какую ошибку?
источник

DP

Dmitry Plyaskin in ☄️ effector
Dmitry Plyaskin
я тут эксперемнитровал с mov и поймал ошибку, основывался на attach, что тут не так?
эта вся информация, которая есть
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Dmitry Plyaskin
я тут эксперемнитровал с mov и поймал ошибку, основывался на attach, что тут не так?
кстати ты сейчас прочитал данные в пустоту, так как регистр a есть только в третьем аргументе fn, чтобы прочитать в первый аргумент (тогда данные полетят и подписчикам), просто убери to
источник