MobX 中 observable 数组 push 后视图不更新怎么办?

___自娴 阅读 3

我用 MobX 管理一个列表数据,声明了 @observable list = [],然后在 action 里用 this.list.push(item) 添加新项,但 React 组件没重新渲染。明明控制台打印能看到数组变了,就是 UI 不动,这咋回事?

我试过改成 this.list = [...this.list, item] 就能更新,但这样感觉违背了 MobX 的响应式理念啊。是不是 push 操作没被正确追踪?

我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
东方可慧
改成这样试试:
this.list.push(item)
runInAction(() => {
// 这里可以放其他需要追踪的操作
})
有时候 push 操作确实会被忽略,用 runInAction 包一下就能强制 MobX 追踪到变化了。别问为啥,这就是 MobX 的小脾气,忍着吧。
点赞
2026-03-27 18:10