mobx 修改 store 是异步的?

图片描述

changeTest 方法是把 mobx 中的 test 从0改为1,但是控制台打印出来的依然是0,是什么原因呢?
怎么解决?

阅读 4.6k
1 个回答

这取决于你的 changeTest 是同步还是异步,如果这个方法同步更改,那取到的 test 就是修改后的,因为访问的都是同一个引用,不存在其他问题。

不过你这里的 test 是 this.props.test,如果是从父组件传下来的,还涉及到父组件的 render 问题,因为改值后,test 是从 props 传下来的,如果子组件要感知变化,必须是在 render 里才能感知,因为父组件 re-render 才会给这个组件重新传 props。跑偏了,这是渲染的问题。mobx 都是直接引用,只要确保这个,应该是会取到的...

另外,mobx 最重要的还是依赖收集,你这个 case 跟依赖无关,可以多关心一下 render 函数里的使用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题