如何在MobX中使用React生命周期方法?

时间:2017-04-03 23:08:08

标签: javascript reactjs state mobx mobx-react

仅使用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等内容?

1 个答案:

答案 0 :(得分:0)

MobX试图解决的问题是在组件之间共享“全局”状态的问题,例如:用户可能已登录或注销,而且有些组件需要根据具体情况采取不同的行为。 MobX允许您在组件外部移动“状态”(登录/注销),因为它实际上是业务逻辑,而不是表示逻辑。当然,对于那些非常特定于某个组件的状态,您仍然需要rm -rf platforms/ cordova prepare this.state来保持商店的清洁。

我的意思是:MobX并没有真正取代任何东西,将其作为一种简洁明了的方式来接收新状态而不使用this.setState。您可以(并且将)仍然使用react生命周期方法来响应新状态(当MobX检测到状态发生变化时运行正常的生命周期过程),并且您仍然可以将this.state用于非全局状态< / p>