cb
Size: a a a
cb
PB
React+Redux для собственного интереса. Сейчас решил поковыряться опять и увидел, что есть альтернатива Redux. Вижу, что MobX довольно давно появился и уже успел пройти довольно долгий путь изменений. Куча вариантов, как его использовать. Статьи в разные годы в разнобой вещают. Не до конца ясная документация. Вызывающие злобу примитивные, однотипные примеры Counter и ToDo.Counter и хотя бы как-то отображает реальный пример приложения. store из нескольких. Например, пусть будет rootStore состоящий из userStore, orgStore и docStore. Все описывать не буду, вот пример создания стора пользователя:const createUserStore = () => {
const store: I_UserStore = {
...,
login(login, password){console.log(login, password);},
...
};
return store;
};
Теперь, создаём rootStore:const createRootStore = () => {
const store: I_RootStore = {
...,
userStore: createUserStore(),
...
};
return store;
};
Далее надо определиться с тем, как подключать store. Решил делать это через контекст реакта:const RootContext = React.createContext({} as I_RootStore);
const StoreProvider = ({children}: any) => {
const rootStore = useLocalStore(createRootStore)
return <RootContext.Provider value={rootStore}>
{children}
</RootContext.Provider>
};
const useRootStore = () => React.useContext(RootContext);
После, в index.tsx я оборачиваю <App/> в StoreProvider.useRootStore и пользую по назначению. Notistack. Как при неудачном логине вызвать экшен notistack? Ведь login это экшен из userStore, а экшен enqueueSnackbar - в snackStore? И такого поведения может быть полно. При работе с Redux, я просто диспатчу нужный экшен в нужном месте в thunk. А как тут поступать - ума не приложу.MK
АН

cb
MK
cb
MK
React+Redux для собственного интереса. Сейчас решил поковыряться опять и увидел, что есть альтернатива Redux. Вижу, что MobX довольно давно появился и уже успел пройти довольно долгий путь изменений. Куча вариантов, как его использовать. Статьи в разные годы в разнобой вещают. Не до конца ясная документация. Вызывающие злобу примитивные, однотипные примеры Counter и ToDo.Counter и хотя бы как-то отображает реальный пример приложения. store из нескольких. Например, пусть будет rootStore состоящий из userStore, orgStore и docStore. Все описывать не буду, вот пример создания стора пользователя:const createUserStore = () => {
const store: I_UserStore = {
...,
login(login, password){console.log(login, password);},
...
};
return store;
};
Теперь, создаём rootStore:const createRootStore = () => {
const store: I_RootStore = {
...,
userStore: createUserStore(),
...
};
return store;
};
Далее надо определиться с тем, как подключать store. Решил делать это через контекст реакта:const RootContext = React.createContext({} as I_RootStore);
const StoreProvider = ({children}: any) => {
const rootStore = useLocalStore(createRootStore)
return <RootContext.Provider value={rootStore}>
{children}
</RootContext.Provider>
};
const useRootStore = () => React.useContext(RootContext);
После, в index.tsx я оборачиваю <App/> в StoreProvider.useRootStore и пользую по назначению. Notistack. Как при неудачном логине вызвать экшен notistack? Ведь login это экшен из userStore, а экшен enqueueSnackbar - в snackStore? И такого поведения может быть полно. При работе с Redux, я просто диспатчу нужный экшен в нужном месте в thunk. А как тут поступать - ума не приложу.PB
PB
cb
cb
MK
V

PB
АН
MK
АН
V
PB
DI статью от Тинькова на Хабре недавно видел. Надо поискать. Спасибо.