首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >not本机mobx:由于启用了严格模式,因此不允许在不使用操作的情况下更改(观察到)可观测值。

not本机mobx:由于启用了严格模式,因此不允许在不使用操作的情况下更改(观察到)可观测值。
EN

Stack Overflow用户
提问于 2022-05-01 20:09:14
回答 1查看 123关注 0票数 0

我使用mobx作为我的react本地应用程序的状态管理,我正在修改一个简单的I数组,如下所示:

代码语言:javascript
复制
let copyy = userStore.unreadChatIds;
copyy.push(e.message.chat_id);
userStore.setUnreadChatIds(copyy);

不管我收到这个mobx警告,我不知道我为什么要得到它,因为我在我的mobx商店使用makeAutoObservable!

代码语言:javascript
复制
[MobX] Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: UserStore@1.unreadChatIds

我的商店

代码语言:javascript
复制
export class UserStore
{
    constructor()
    {
        makeAutoObservable(this);
        
unreadChatIds=[];

setUnreadChatIds(payload)
    {
        this.unreadChatIds = payload;
    }
}

为什么我要得到这个错误,我如何解决它?如果使用makeAutoObservable并使用setter方法作为操作,则不会直接更改mobx状态。

EN

回答 1

Stack Overflow用户

发布于 2022-07-25 05:51:07

此警告发生在您直接修改userStore.unreadChatIds时。

要解决这个问题,您应该通过操作修改该值。

代码语言:javascript
复制
userStore.addChatId(e.message.chat_id);

商店

代码语言:javascript
复制
export class UserStore
{
    constructor()
    {
        makeAutoObservable(this, {
        unreadChatIds: observable,
        setUnreadChatIds: action,
        addChatId: action,
    });
        
unreadChatIds=[];

setUnreadChatIds(payload)
    {
        this.unreadChatIds = payload;
    }

addChatId(id)
 {
   this.unreadChatIds.push(id);
 }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72080064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档