[英]React Native mobx: Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed
我正在使用 mobx 作为 state 管理我的 react-native 应用程序,我正在修改一个简单的 id 数组,如下所示:
let copyy = userStore.unreadChatIds;
copyy.push(e.message.chat_id);
userStore.setUnreadChatIds(copyy);
但是我收到了这个 mobx 警告,我不知道为什么会收到它,因为我在我的 mobx 商店中使用 makeAutoObservable
[MobX] Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: UserStore@1.unreadChatIds
我的店铺
export class UserStore
{
constructor()
{
makeAutoObservable(this);
unreadChatIds=[];
setUnreadChatIds(payload)
{
this.unreadChatIds = payload;
}
}
为什么我会收到此错误,我该如何解决? afaik 如果使用 makeAutoObservable 并使用我的 setter 方法作为操作,我不会直接更改 mobx state。
当您直接修改 userStore.unreadChatIds 时会出现此警告。
要解决此问题,您应该通过操作修改值
userStore.addChatId(e.message.chat_id);
店铺
export class UserStore
{
constructor()
{
makeAutoObservable(this, {
unreadChatIds: observable,
setUnreadChatIds: action,
addChatId: action,
});
unreadChatIds=[];
setUnreadChatIds(payload)
{
this.unreadChatIds = payload;
}
addChatId(id)
{
this.unreadChatIds.push(id);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.