Mobx看不到setInterval内部的变化



我有一个这样的屏幕

const ScreenA = observer(() => {
const { userStore } = useRootStore();
useEffect(() => {
setInterval(() => {
userStore.ping();
}, 3000);
}, []);
console.log(userStore.pingResult);
retunr <></>
});

和存储

class UserStore {
pingResult = null;
ping = async () => {
console.log('ping');
const pingResult = await this.userService.ping();
runInAction(() => {
this.pingResult = pingResult;
});
};
}

问题是console.log(userStore.pingResult);只工作一次-我猜,观察者只是看不到商店已更新。尝试JSON.parse(JSON.stringify(pingResult))以确保pingResult是全新的,但它不起作用。同时,console.log('ping')按预期工作-每3秒。

我认为你必须让你的用户商店可观察。否则它只是一个普通的JS实例,对于mobx

来说是不可观察的。
class UserStore {
constructor() {
makeAutoObservable(this);
}
// ...
}

相关内容

  • 没有找到相关文章

最新更新