Error: Mobx Provider: The set of provided stores has changed.

呕心沥血,终于解决了这个坑爹的报错!!!

在使用mobx时候,开启项目热更新,修改了mobx中store的值,会导致页面报错,报错内容如下

Error:  Mobx Provider: The set of provided stores has changed. See: https://github.com/mobxjs/mobx-react#the-set-of-provided-stores-has-changed-error.

原因是修改了store中的值,app会再次刷新,Store会重新创建并应用到Provider上。

因此,使用下面的代码,这样即使在 app.js 中重新渲染 Store,它也不会发生变化。

import App from "next/app";
import React from "react";
import { Provider } from "mobx-react";
import RootStore from "../stores";

interface State {
  Store: RootStore;
}

export default class MyApp extends App<{}, State> {
  state: State = {
    Store: new RootStore()
  };
  render() {
    const { Component, pageProps } = this.props;

    return (
      <Provider {...this.state.Store}>
          <Component {...pageProps} />
      </Provider>
    );
  }
}

原理是将 Store 作为 State 进行管理,则仅在第一次渲染时才会创建新的 Store,即使之后重新渲染时也可以使用现有的 Store。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值