mobx升级到6后组件不刷新

问题描述

项目进行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 firingissue地址
mobx autorun isn't firing


版权声明:本文为u010899138原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。