Size: a a a

2020 September 23

m

mg901 in ☄️ effector
источник

ф

фильтруй мысли... in ☄️ effector
мне в пакет заверните, устрою пикник в лесу
источник
2020 September 24

NF

Nikita Fedorov in ☄️ effector
в английском лесу☝️
источник

🦜

🦜 in ☄️ effector
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Nikita Fedorov
Вау, посмотрите как хорошо сделана дока у re-frame. Прям образцово показательная.
re-frame в prior art эффектора как раз из-за подробного и понятного описания идей)
источник

NF

Nikita Fedorov in ☄️ effector
🚀🔬 🚀🔬🚀🔬
re-frame в prior art эффектора как раз из-за подробного и понятного описания идей)
да, я это вспомнил после написанного)
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Nikita N.
я тогда не понимаю как мне затипизировать fail, failData?
для таких целей пока нужно использовать запись с конфигом, так как если дженерики будут точно такими же как в оверлоаде с конфигом, то новый вариант может сломать типы существующего кода

пока разбираюсь с этим моментом
источник

NF

Nikita Fedorov in ☄️ effector
интересно на сколько можно развить эту фундаментальную идею о том что транзакции это данные совместив с тем что у нас как-бы уже есть инфа об изменениях, по сути же
patchesEventStream = SomeStream([
 { "op": "replace", "path": "/baz", "value": "boo" },
 { "op": "add", "path": "/hello", "value": ["world"] },
 { "op": "remove", "path": "/foo" }
])
let helloPathes = patchesEventStream
.filterLike(immer(x => x.hello))
// [{ "op": "add", "path": "/hello", "value": ["world"] }]
.toSubPatch(immer(x => x.hello))
// [{ "op": "set", "path": "/", "value": ["world"] }]
let oldHello = reduce(oldHello, helloPathes)
// "world"
reduce = render
* это псевдокод, да и патчи не обязательно патчи
источник

NF

Nikita Fedorov in ☄️ effector
и vdom не нужен
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Nikita Fedorov
интересно на сколько можно развить эту фундаментальную идею о том что транзакции это данные совместив с тем что у нас как-бы уже есть инфа об изменениях, по сути же
patchesEventStream = SomeStream([
 { "op": "replace", "path": "/baz", "value": "boo" },
 { "op": "add", "path": "/hello", "value": ["world"] },
 { "op": "remove", "path": "/foo" }
])
let helloPathes = patchesEventStream
.filterLike(immer(x => x.hello))
// [{ "op": "add", "path": "/hello", "value": ["world"] }]
.toSubPatch(immer(x => x.hello))
// [{ "op": "set", "path": "/", "value": ["world"] }]
let oldHello = reduce(oldHello, helloPathes)
// "world"
reduce = render
* это псевдокод, да и патчи не обязательно патчи
эффектор так и работает, все ноды графа — это пайплайны из атомарных операций типа mov/update
источник

NF

Nikita Fedorov in ☄️ effector
ну т.е. как в datomic разбить обновления стора и лайв индекса
источник

NF

Nikita Fedorov in ☄️ effector
только с dom
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
и из этого непосредственно следует принцип работы forest
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Nikita Fedorov
только с dom
так и есть
источник

🚀🚀

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

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
хинт — ни стримы ни иммер для этого не нужны
источник

NF

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

NF

Nikita Fedorov in ☄️ effector
🚀🔬 🚀🔬🚀🔬
так и есть
вот так со всеми моими умными мыслями, кто-то их уже думал до меня😢
источник

n

null in ☄️ effector
Насчёт документации - мне в ней все нравится, может только бы стоило добавить секцию Cookbook, типа I want... (вставьте свое). I want to change original event payload, и там разные способы в виде map, через sample, prepend. То есть те же вопросы, которые тут периодически возникают
источник

n

null in ☄️ effector
имхо
источник