在这里我不得不吐槽一下我遇到的这个问题虽然解决了
我上一个测试项目使用mobx完全没问题,结果我正式项目一上mobx,出毛病了,代码流程都是一样,但他操作成功,数据更新,就是不刷新组件我真是服气了,网上找了好久都没找到有用的文章,我真的自闭了,但是mobx也不能放弃,我硬着头皮看啊,搜索文章,看api,完全摸不着头脑,最后我想到一个点,我去看了一下mobx版本,发现问题
这是不能正常使用的情况,版本6.0了我第一次使用这玩意儿哪知道啊,
"mobx": "^6.0.1",
"mobx-react": "^7.0.0",
直接切换到我测试项目的版本吧
"mobx": "^5.15.7",
"mobx-react": "^6.3.0",
我丢,报错了大概错误信息,说我版本太低至少要6.0才能使用mobx-react-lite
mobx-react-lite@3 requires mobx at least version 6 to be available
直接把mobx-react-lite给安排上,成功了,组件可以正常刷新了
"mobx-react-lite": "^2.0.7",
上面是第一种解决办法,切换回5.15.7版本可以解决,但是还得知道新版本特性才行
根据评论区各位老哥的力量,了解了新版本的解决方案,"makeObservable"加上这段代码就可以监听更新了,不需要切换老版本
import {observable,action, makeObservable} from "mobx";
class learnStore {
constructor() {
makeObservable(this)
}
@observable learnData = getVal("learnData", []); //学生详情是否打开
@action setLearnData(val) {
this.learnData = val
setVal("learnData", val)
}
}
export default new learnStore();
最后还有个疑问,mobx5+不支持ie这就很难受