Size: a a a

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

2021 March 24

M

Maksim Sharov in Reatom — стейт-менеджер
Sergey
Нет, тут аналогично reselect
Не понял, про reselect знаю, в чем аналогия
источник

S

Sergey in Reatom — стейт-менеджер
Maksim Sharov
Не понял, про reselect знаю, в чем аналогия
В построении селектора
источник

Е

Евгений in Reatom — стейт-менеджер
Sergey
В примере выше можно поля dateStart, dateEnd вынести в поле period и выбирать его из атома
Воо тут я уже не понял
источник

M

Maksim Sharov in Reatom — стейт-менеджер
Sergey
В примере выше можно поля dateStart, dateEnd вынести в поле period и выбирать его из атома
И возвращать объект, который соответствует полю? Так отличия же нет
источник

S

Sergey in Reatom — стейт-менеджер
Евгений
Воо тут я уже не понял
Сам атом с данным построить так чтобы там эти два поля были на уровень ниже в обьекте period
источник

S

Sergey in Reatom — стейт-менеджер
Maksim Sharov
И возвращать объект, который соответствует полю? Так отличия же нет
Так ссылка не будет меняться
источник

S

Sergey in Reatom — стейт-менеджер
Sergey
В построении селектора
Т.е селектор нужно строить через map и combine, в данном случае два разв map чтобы выбрать dateStart, dateEnd а потом это обьединить combine
источник

Е

Евгений in Reatom — стейт-менеджер
А зачем? Там же вытащит еужные поля и только если они изменяться то перерендерит
источник

S

Sergey in Reatom — стейт-менеджер
Евгений
А зачем? Там же вытащит еужные поля и только если они изменяться то перерендерит
Где там?
источник

S

Sergey in Reatom — стейт-менеджер
Иван
или сделать вычисляемый атом

const newAtom = map(
asaAtom,
({dateStart, dateEnd}) =>
 ({dateStart, dateEnd})
)

const { dateStart, dateEnd } = useAtom(newAtom);
Вот про такие конструкции речь
источник

Е

Евгений in Reatom — стейт-менеджер
Ruslan G.
привет. что-то не могу найти примеров , когда атом "хранит" объект. во всех примерах атом "хранит" простой тип данных, например, число (https://reatom.js.org/#/examples?id=simple-counter)

можно ли в атоме "хранить" объект, как на скриншоте? Или лучше asaAtom разделить на 6 атомов? И каждый раз импортировать определенные атомы в нужные компоненты реакта?
Или лучше использовать 6 отдельных атомов, а потом объединить их с помощью combine?
Мы же про этот код говорим?
источник

M

Maksim Sharov in Reatom — стейт-менеджер
Sergey
Так ссылка не будет меняться
Объект это всегда новая ссылка
источник

M

Maksim Sharov in Reatom — стейт-менеджер
Sergey
Т.е селектор нужно строить через map и combine, в данном случае два разв map чтобы выбрать dateStart, dateEnd а потом это обьединить combine
Приведи пример в псевдокоде
источник

M

Maksim Sharov in Reatom — стейт-менеджер
Мне кажется о разных вещах говорим
источник

Е

Евгений in Reatom — стейт-менеджер
const dateStart = useAtom(asaAtom, (atomValue) => atomValue.dateStart, []);
const dateEnd = useAtom(asaAtom, (atomValue) => atomValue.dateEnd, []);
должно как роаз отработать как требуется, без лишни ререндеров
источник

S

Sergey in Reatom — стейт-менеджер
Maksim Sharov
Объект это всегда новая ссылка
Нет же, с чего это? Только если ты создаёшь новый обьект
источник

S

Sergey in Reatom — стейт-менеджер
Евгений
const dateStart = useAtom(asaAtom, (atomValue) => atomValue.dateStart, []);
const dateEnd = useAtom(asaAtom, (atomValue) => atomValue.dateEnd, []);
должно как роаз отработать как требуется, без лишни ререндеров
Да, это самый простой вариант
источник

M

Maksim Sharov in Reatom — стейт-менеджер
Sergey
Т.е селектор нужно строить через map и combine, в данном случае два разв map чтобы выбрать dateStart, dateEnd а потом это обьединить combine
Поясни про два раза map кодом, пытаюсь уловить
источник

S

Sergey in Reatom — стейт-менеджер
Как я понял тут хотят обойтись одним useAtom ( может быть важно когда используется в элементах списка)
источник

Е

Евгений in Reatom — стейт-менеджер
const {dateStart, dateEnd} = useAtom(asaAtom, (state) => ({dateStart: state.dateStart, dateEnd: state.dateEnd}))
источник