reactjs - 使用相同的依赖值调用 useEffect 两次 - 依赖是可观察的 mobx 属性
问题描述
我有使用 useEffect 和 mobx 状态依赖的反应组件:
useEffect((): (() => void) => {
console.log(appState.getCurrent());
}, [appState.getCurrent()]);
mobx状态下的相关代码:
@observable private current = {} as any;
@action public setCurrent(c: any) {
this.current = c;
}
@computed public getCurrent() {
return this.current;
}
很奇怪,但是 useEffect 以相同的值被调用了两次。
调试 setCurrent 方法,它只被调用一次。
更奇怪 - 我试图将依赖项更改为 appState.getCurrent().id,但它仍然以相同的值到达 useEffect 两次。
可能是因为使用 mobx 属性作为 useEffect 的依赖项?
我该如何解决这个问题?
解决方案
您必须使用 with autorun如文档所示
useEffect((): (() => void) => {
autorun(reaction)=>{
console.log(appState.getCurrent());
}
}, []);
推荐阅读
- android - 可以在 Android Studio 中使用 Flutter 开发 IOS 吗?
- c# - 在前一个元素匹配条件之后获取流的第一个元素
- javascript - 松露测试中的时间延迟
- python - Gmail API ID 不工作,但线程 ID 工作
- ruby-on-rails - config.assets.compile = false - 使 heroku 不在生产中显示我的图像
- c# - 为什么我的身份数据库表没有迁移到 Azure?
- c - 从输入文件中读取字符串/单词和整数
- ruby-on-rails - 将默认日期设置为“所有日期”到 datepicker
- postgresql - 什么 PL/pgSQL 异常与 PostgreSQL 中 Oracle 的 VALUE_ERROR 等效?
- node.js - 通过发送 200 阻止 Express-API 并继续执行?