2

仅使用 MobX 存储会消除常规有状态组件的功能吗?目前,我正在使用 componentDidUpdate 来访问 prevState 和 prevProps 并根据它们的值调用其他方法。如何在 MobX/React MobX 商店中访问类似的生命周期方法?

更具体地说,这是我当前的代码在我的生命周期函数之一中的样子:

componentDidUpdate(prevProps, prevState) {
    const currentWidth = this.state.width.window;
    const prevWidth = prevState.width.window;
    if (currentWidth !== prevWidth) {
        this.setState({...});
    }
}

我如何使用 MobX/MobX React 有效地做同样的事情?

换句话说,我如何(不使用 this.state、构造函数和生命周期方法)访问 Mobx 存储中的 prevProps 和 prevState 之类的东西?

4

1 回答 1

0

MobX 试图解决的是在组件之间共享“全局”状态的问题,例如:用户可以登录或注销,并且多个组件将需要根据该情况采取不同的行为。MobX 允许您将“状态”(登录/退出)移到组件之外,因为它实际上是业务逻辑,而不是表示逻辑。当然,您仍然需要this.state那些this.setState非常特定于组件的状态,以保持您的商店清洁。

我的意思是:MobX 并没有真正取代任何东西,把它当作一种干净、简单的方式来接收新的状态,而无需使用this.state. 您可以(并且将)仍然使用 react 生命周期方法来响应新状态(当 MobX 检测到状态更改时,将运行正常的生命周期过程),并且您仍然可以this.state用于非全局状态

于 2017-04-04T15:15:04.210 回答