简单粗暴,在mobx中取代state,改用@observable引入可观察属性

Posted openglnewbee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单粗暴,在mobx中取代state,改用@observable引入可观察属性相关的知识,希望对你有一定的参考价值。

http://cn.mobx.js.org/refguide/observer-component.html

可观察的局部组件状态

就像普通类一样,你可以通过使用 @observable 装饰器在React组件上引入可观察属性。 这意味着你可以在组件中拥有功能同样强大的本地状态(local state),而不需要通过 React 的冗长和强制性的 setState 机制来管理。 响应式状态会被 render 提取调用,但不会调用其它 React 的生命周期方法,除了 componentWillUpdate 和 componentDidUpdate 。 如果你需要用到其他 React 生命周期方法 ,只需使用基于 state 的常规 React API 即可。

上面的例子还可以这样写:

import observer from "mobx-react"
import observable from "mobx"

@observer class Timer extends React.Component 
    @observable secondsPassed = 0

    componentWillMount() 
        setInterval(() => 
            this.secondsPassed++
        , 1000)
    

    render() 
        return (<span>Seconds passed:  this.secondsPassed  </span> )
    


ReactDOM.render(<Timer />, document.body)
Copy

对于使用可观察的局部组件状态更多的优势,请参见为什么我不再使用 setState 的三个理由

以上是关于简单粗暴,在mobx中取代state,改用@observable引入可观察属性的主要内容,如果未能解决你的问题,请参考以下文章

MobX入门

MobX基础理解

mobx基本概念

错误:[mobx-state-tree] 期望 mobx-state-tree 类型作为参数 1,改为未定义

[Mobx] Use MobX actions to change and guard state

[Redux/Mobx] Context api可以取代Redux吗?为什么?