首先安装:yarnaddmobxmobx-reactornpmimobxmobx-react--save-dev1.创建mobx仓库方法一:使用@observable装饰器import{makeObservable,observable,action,computed}from"mobx";classA{//声明状态@observablelist=[{id:1,name:"zhangsan",age:3},{id:2,name:"jack",age:18},];constructor(){/在/mbox6之后,需要添加这个组件来更新makeObservable(this);}//Action修改状态的action@actionaddList(item){this.list=[item,...this.list];}/*计算属性(最好通过解构获取值,这样mobx可以检测到这个值是否是自己的值变化,从而触发当前的计算)当数据发生变化时,会自动执行。如果页面没有引用它,即使内部引用的值发生变化,也不会执行*/@computedgetlistTotal(){const{list}=this;返回列表长度;}}方法二:不带@observable装饰器import{makeObservable,observable,action,computed}from"mobx";classA{list=[{id:1,name:"zhangsan",age:3},{id:2,name:"jack",age:18},];constructor(){//mobx6和之前的版本这是最大的区别官方案例https://mobx.js.org/observable-state.htmlmakeObservable(this,{list:observable,addList:动作,listTotal:计算,});}addList(item){this.list=[item,...this.list];}getlistTotal(){const{list}=this;返回列表长度;}}二、传递mobx仓库(完成App组件的供给)//需要使用Provider完成App组件的数据供给,让所有后代组件共享mobx仓库import{Provider}from"mobx-react";importStorefrom"./store/A.js";conststore=newStore();ReactDOM.render({/*如果这里声明所有的store都存储在xxx属性上,那么如果你想要在组件中使用mobx,必须注入xxx示例:@inject("storeAAA")*/}{storeAAA.list.map((v)=>{return(
