微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用React Hooks + HMR保持MobX存储上下文

如何解决使用React Hooks + HMR保持MobX存储上下文

我使用Webpack 4,Typescript(ts-loader)进行了简单的设置,并且将React v16.13与mobx5和mobx-react6一起使用。最近引起我注意的是,在热重装模块时-我立即丢失了所有存储在React.Context中的存储数据。

举个例子:

const providers = {
    userStore: new UserStore(),...
}
export const storeContext = createContext(providers);

//

//useStore.ts
import { useContext } from 'react';
import { storeContext } from './providers';

export const useStore = () => useContext(storeContext);

//

    // App.tsx
    const initUser = useCallback(async () => {
        try {
            await userStore.getUser();
        } catch {
        } finally {
            appStore.setAppLoaded();
        }
    },[appStore,userStore]);

    useEffect(() => {
        if (!appStore.token) {
            appStore.setAppLoaded();
            return;
        }

        initUser();
    },initUser]);

每当我更新组件或商店时-发生HMR后,我都会丢失状态,并且会发生这些用于加载网页的初始操作(根据在不同组件中使用的存储而不同的操作)。我在想这与钩子的依赖关系有关。是否有适当的方法在钩子中建立store依赖关系,以使“完整状态刷新”不会发生,或者我在这里漏了一点?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。