TypeError:无法添加属性x,对象不可扩展

时间:2018-08-12 17:11:30

标签: reactjs mobx mobx-react

我在使用MobX动作切换布尔可观察值时遇到麻烦。该消息似乎表明我在尝试将属性从false切换为true时正在尝试添加属性:

TypeError: Cannot add property text_copied_message, object is not extensible
src/stores/ui_store.js:54
  51 | }
  52 | 
  53 | change_copy_message_state () {
> 54 |     this.text_copied_message = true;

这是动作:

change_copy_message_state () {
    this.text_copied_message = true;

    window.setTimeout(() => {
        this.text_copied_message = false;
    }, 5000);
}

这是调用操作的组件代码:

<CopyToClipboard text={ui_store.final_text_message}>
    <Button
        size='huge'
        color='orange'
        onClick={ ui_store.change_copy_message_state }
    >
        Copy Text and Open Social Media Sites in New Tabs
    </Button>
</CopyToClipboard>

谁能说出是什么原因造成的?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我通过将函数转换为箭头函数来解决,所以在您的情况下:

change_copy_message_state = () => {
    // ...
}

通过这种方式this被绑定到对象。另外,在装饰它时,请使用action.bound

参考:https://mobx.js.org/refguide/action.html