Size: a a a

Reatom — стейт-менеджер

2020 May 26

КН

Котяй Негодяй... in Reatom — стейт-менеджер
artalar
Вообще в планах сделать, но есть парочка эдж-кейсов,которые я не придумал как красиво решить
Я тут заметил, что ты предпочёл не делать map в функциональном стиле. Не думал об этом, или есть соображения против?
источник

КН

Котяй Негодяй... in Reatom — стейт-менеджер
Для того, чтобы иметь возможность делать так, например:

const atom3 = compose( // Или pipe
 map(transform1),
 map(transform2),
 combine((value2, value1) => value3, atom2),
)(atom1);
источник

КН

Котяй Негодяй... in Reatom — стейт-менеджер
Так же это станет юзабельно при использовании pipeline operator.
источник

КН

Котяй Негодяй... in Reatom — стейт-менеджер
@artalar что по этому поводу думаешь?
источник

a

artalar in Reatom — стейт-менеджер
Кароч вопрос хороший, пока мозг загружен - сказать нечего, надо подумать
источник

КН

Котяй Негодяй... in Reatom — стейт-менеджер
А, ок, ок. Я понимаю, что концепция объёмная довольно.
источник

a

artalar in Reatom — стейт-менеджер
Котяй Негодяй
Для того, чтобы иметь возможность делать так, например:

const atom3 = compose( // Или pipe
 map(transform1),
 map(transform2),
 combine((value2, value1) => value3, atom2),
)(atom1);
pipe, будет (уже есть локально) в фьючерсах, на в реатом/core - пока не знаю - идея была базово сделать супер просту юапишку - а дальше крути как хочешь
источник

🐏G

🐏 Alexander Gontarev... in Reatom — стейт-менеджер
так и до эффектора не далеко
источник
2020 May 27

КН

Котяй Негодяй... in Reatom — стейт-менеджер
Предположим, я вызвал экшн, в ответ на который изменились все три атома. Сколько обновлений будет у атома result? 3 или 1?

const result = combine({ atom1, atom2, atom3 })
источник

a

artalar in Reatom — стейт-менеджер
Котяй Негодяй
Предположим, я вызвал экшн, в ответ на который изменились все три атома. Сколько обновлений будет у атома result? 3 или 1?

const result = combine({ atom1, atom2, atom3 })
1
источник

КН

Котяй Негодяй... in Reatom — стейт-менеджер
Ништяк.
источник

a

artalar in Reatom — стейт-менеджер
ну это основная фишка, промежуточные состояния получить никак нельзя (glitch-free)
источник

a

artalar in Reatom — стейт-менеджер
Котяй Негодяй
А почем у нет sample? Или здесь это иначе решается?
Окей, кажется я придумал как сделать семпл. Если рили нужно - пинганите меня, запрогаю ченить
источник

КН

Котяй Негодяй... in Reatom — стейт-менеджер
artalar
Окей, кажется я придумал как сделать семпл. Если рили нужно - пинганите меня, запрогаю ченить
Ок. Спасибо. =)
источник

IB

Ivan Berger in Reatom — стейт-менеджер
artalar
Окей, кажется я придумал как сделать семпл. Если рили нужно - пинганите меня, запрогаю ченить
+
источник

a

artalar in Reatom — стейт-менеджер
artalar
Окей, кажется я придумал как сделать семпл. Если рили нужно - пинганите меня, запрогаю ченить
Ну ключевая идея в том что бы сделать промежуточный атом с метаинфой, который будет писать в свой стейт от кого он обновился
источник

a

artalar in Reatom — стейт-менеджер
Примерно так (навскидку написал)
источник

a

artalar in Reatom — стейт-менеджер
const sample = ({ source, clock }) => {
 const defaultState = getState(source);
 const accumulatorMetaAtom = declareAtom(
   {
     data: defaultState,
     shouldUpdate: false,
   },
   (on) => [
     on(source, (state, data) => ({ data, shouldUpdate: false })),
     on(clock, ({ data }) => ({ data, shouldUpdate: true })),
   ]
 );

 return declareAtom(defaultState, (on) => [
   on(
     accumulatorMetaAtom,
     (state, ({ data, shouldUpdate }) => (shouldUpdate ? data : state))
   ),
 ]);
};
источник

a

artalar in Reatom — стейт-менеджер
Фишка в том что в state второго редьюсера находится результат первого редьюсера (ну логично, вроде)
источник

a

artalar in Reatom — стейт-менеджер
А, ну и возврат state во втором атоме говорит о том что обновление не должно дальше распространяться
источник