Size: a a a

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

2020 April 23

m

mg901 in Reatom — стейт-менеджер
@artalar как избавиться от дублирования функций в редьюсере, в ответ на которые выполняется одно и то же действие?
const errorAtom = declareAtom("error", { shown: false, text: "" }, on => [
 on(errorShown, (_, payload) => ({
   shown: true,
   text: payload
 })),
 on(alertClosed, () => ({
   shown: false,
   text: ""
 })),
 on(modalClosed, () => ({
   shown: false,
   text: ""
 })),
 on(toastClosed, () => ({
   shown: false,
   text: ""
 }))
]);
источник

m

mg901 in Reatom — стейт-менеджер
@artalar почему бы не прицепить функкцию reset и не передавать в неё массив иветнов?
источник

a

artalar in Reatom — стейт-менеджер
mg901
@artalar почему бы не прицепить функкцию reset и не передавать в неё массив иветнов?
- это частный случай, а не общий
- у атомов нет методов, объявление статическое же
- можно написать хелпер reset, который принимает on и массив экшеов и возвращает массив для Середа. Хотя ещё инит стейт надо будет в него передать
источник

m

mg901 in Reatom — стейт-менеджер
artalar
- это частный случай, а не общий
- у атомов нет методов, объявление статическое же
- можно написать хелпер reset, который принимает on и массив экшеов и возвращает массив для Середа. Хотя ещё инит стейт надо будет в него передать
я не про методы
источник

m

mg901 in Reatom — стейт-менеджер
(on, reset) => [on(increment, state => state + 1), reset(reset)]
источник

m

mg901 in Reatom — стейт-менеджер
mg901
(on, reset) => [on(increment, state => state + 1), reset(reset)]
источник

IA

Ilya Agarkov in Reatom — стейт-менеджер
зачем так агресивно линковать человека?
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
artalar
- это частный случай, а не общий
- у атомов нет методов, объявление статическое же
- можно написать хелпер reset, который принимает on и массив экшеов и возвращает массив для Середа. Хотя ещё инит стейт надо будет в него передать
а почему именно массив? результат же как я понял не используется
источник

m

mg901 in Reatom — стейт-менеджер
Ilya Agarkov
зачем так агресивно линковать человека?
это чтобы сообщение не потерялось.
источник

a

artalar in Reatom — стейт-менеджер
mg901
(on, reset) => [on(increment, state => state + 1), reset(reset)]
Второй аргумент слишком ценен что бы тратить его на ресет 😅
источник

IA

Ilya Agarkov in Reatom — стейт-менеджер
mg901
@artalar почему бы не прицепить функкцию reset и не передавать в неё массив иветнов?
function getReset(on, actions, state) {
 return actions.map(action => on(action, () => state))
}
как то так
источник

IA

Ilya Agarkov in Reatom — стейт-менеджер
declareAttom(on => [
 …getReset(on [acgion1, action2], {  })
])
источник

a

artalar in Reatom — стейт-менеджер
Ilyas Kabirov
а почему именно массив? результат же как я понял не используется
На всякий случай это строго в тайпингах указано, может пригодится
источник

a

artalar in Reatom — стейт-менеджер
Ilya Agarkov
function getReset(on, actions, state) {
 return actions.map(action => on(action, () => state))
}
как то так
+
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
artalar
На всякий случай это строго в тайпингах указано, может пригодится
type DependencyMatcher<TState> = (on: DependencyMatcherOn<TState>) => any
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
а почему тогда так?
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
а сам DependencyMatcherOn возвращает void
источник

m

mg901 in Reatom — стейт-менеджер
Ilya Agarkov
function getReset(on, actions, state) {
 return actions.map(action => on(action, () => state))
}
как то так
Спасибо за хэлпер, но я не очень понимаю как типизироваать actions
источник

IA

Ilya Agarkov in Reatom — стейт-менеджер
mg901
Спасибо за хэлпер, но я не очень понимаю как типизироваать actions
не понял, а при чем тут типизация?
источник

m

mg901 in Reatom — стейт-менеджер
@IlyaAgarkov при том, что reatom на ts написан и я его юзаю именно с ts
источник