问题描述
项目进行package.json中的依赖包全量更新(可以参照npm更新项目中全部依赖),将mox:5.15.7,mobx-react:6.3.1
更新到 mox:6.0.4,mobx-react:7.0.5
应用通过@observable
修饰的属性变更后,视图并不刷新
解决方案
在不做改变的前提下,class中添加makeObservable
,同时使用makeObservable包裹要监听的对象(我们项目中是对整个class对象设置成observable,因此在构造函数内使用了makeObsevable(this)
)
import {action, makeObservable, observable} from 'mobx'
export class BaseModel {
constructor() {
// 添加makeObservable
makeObservable(this)
}
@observable
dataInfo = {}
@action
initDataInfo(info: any) {
this.dataInfo = info
}
@action
setDataInfo(info: any) {
this.dataInfo = Object.assign({}, this.dataInfo, info)
}
}
问题寻求解决的过程
github中issue找到了关于autorun
无法自动触发的问题,推理视图无法刷新的原因也是一致的(mobx中文网还没有更新mobx6版本的文档,部分调整暂时我们只能通过某些方式去看官网了,你懂的)
issue中的描述:mobx autorun isn't firing
issue地址