Size: a a a

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

2021 April 19

AK

Anton Kalodzich in Reatom — стейт-менеджер
Вот тут и стоит разделять глобальное состояние и кэш
источник

AK

Anton Kalodzich in Reatom — стейт-менеджер
Но если не использовать аполло как стм, то я бы посмотрел в сторону urql
источник

a

artalar in Reatom — стейт-менеджер
Да разные могут быть комбинации. Чаще всего они обрабатывают разные данные, а где-то в апи слое их читают, склеивают и отправляют.
Лично я противник такого подхода
источник

EM

Eugene Maltsev in Reatom — стейт-менеджер
Ооо, погуглю, интересно
источник

a

artalar in Reatom — стейт-менеджер
Это на словах хорошо звучит, а по факту это вообще не правильно готовят.
Если кеш менеджер выделять, то он должен быть на инфраструктурном/ системном (подставь свой базворд) слое приложения, а не в компоненте кверю фетчить. Я вообще ни от кого не слышу во фронте про выявление и разделение используемых моделей данных, хотя это должно быть стандартом в любой разработке софта
источник

a

artalar in Reatom — стейт-менеджер
Тебе его уже советовали в другом чате))
источник

EM

Eugene Maltsev in Reatom — стейт-менеджер
Да, вспомнил, когда опять попал на этот сайт 😅
Незапоминающее название...
источник

AK

Anton Kalodzich in Reatom — стейт-менеджер
Если использовать graphql клиент, то делить уже проще будет, чем с рестом, когда чаще всего все в стм пихают
источник

И

Иван in Reatom — стейт-менеджер
И без стм можно (нужно) апи-клиент выделять. Это зависит от конкретного разработчика
источник

a

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

AK

Anton Kalodzich in Reatom — стейт-менеджер
Type policies в аполло разве не решает эту проблему?
источник

Б

Богдан in Reatom — стейт-менеджер
ну стм это очень узко, если учитывать перспективу когда стм будет вылезать на уровень взаимодействия с ресурсами бэка то почему бы не замахнуться на следующий уровень —  написать не просто стейт-менеджер а универсальную базу данных которая будет работать и на клиенте и на бэкенде и будет автоматически грузить данные из шаблонов (примерно как вот этот плагин к gql - https://babel-blade.netlify.app/docs/declarationdeclaration) но не только грузить а еще подписываться на оповещения всем этим данным в шаблоне а также автоматически в фоне синхронизировать изменения по данным (то есть как будто optimistic-ui только с выходом на offline-like синхронизацию). В итоге вообще не нужно будет разрабатывать отдельно бэкенд или api (фича автоматического бэкенда)  - разработчик пишет всю логику на фронте в одом месте (включая изменение данных) а бд на клиенте в фоне автоматически синхронизирует изменения с бд на сервере
источник

a

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

a

artalar in Reatom — стейт-менеджер
Пописал доку для второго реатома: описал практически всю апишку, добавил сравнительную таблицу с другими СМ и еще по мелочи
https://github.com/artalar/reatom/tree/v2/packages/core

ВСЕ НА ОЧЕНЬ ПЛОХОМ АНГЛИЙСКОМ, пр велком на фиксы)
источник
2021 April 20

ОД

Олег Драпеза... in Reatom — стейт-менеджер
Супер! А по миграции есть что почитать?
источник

a

artalar in Reatom — стейт-менеджер
Пока нет, но там не сильно сложно должно быть
источник

AI

Artsiom Ivanov in Reatom — стейт-менеджер
сорь, не ПР:

https://github.com/artalar/reatom/tree/v2/packages/core#what-is-state-management
State is a term from FSA // FSM ?

https://github.com/artalar/reatom/tree/v2/packages/core#function-overloads
increment … increment ()
const add … increment() // add() ?
const set … increment() // set() ?
источник

AI

Artsiom Ivanov in Reatom — стейт-менеджер
const counterAtom = declareAtom(($, state = 0) => {
 // the handler may be an action handler
 $(increment.handle(() => state++))
 return state
})


возвращаемое значение handle не используется же? Нам тут важно как-то подписать (`$`) declareAtom на increment action?
источник

a

artalar in Reatom — стейт-менеджер
FSA // FSM одно и тоже


про increment не понял
источник

AI

Artsiom Ivanov in Reatom — стейт-менеджер
const add = declareAction<number>()
increment(42)
// { type: 'action [2]', payload: 42 }


тут же должен быть вызов add а не increment
источник