无法从 mobx 导入装饰

Posted

技术标签:

【中文标题】无法从 mobx 导入装饰【英文标题】:Not able to import decorate from mobx 【发布时间】:2021-02-02 19:43:51 【问题描述】:

尝试导入错误:“装饰”未从“mobx”导出。 我的 mobx 版本是 6.0,我尝试将包从 mobx 更改为 mobx-react、mobx-react-lite、mobx-decorate。但仍然无法解决。

提前致谢

Screenshot

【问题讨论】:

请不要上传图片,如果可能的话在这里粘贴错误和代码。 【参考方案1】:

decorate API 已在 MobX 6 中移除,需要在目标类的构造函数中替换为 makeObservable。它接受相同的参数。

例子:

import  makeObservable, observable, computed, action  from "mobx"

class Doubler 
    value

    constructor(value) 
        makeObservable(this, 
            value: observable,
            double: computed,
            increment: action
        )
        this.value = value
    

    get double() 
        return this.value * 2
    

    increment() 
        this.value++
    

还有新的东西makeAutoObservable,你甚至不需要使用装饰器:

import  makeAutoObservable  from "mobx"

class Timer 
    // You don't even need to use decorators anymore
    // property automatically becomes observable
    secondsPassed = 0

    constructor() 
        // Call it here
        makeAutoObservable(this)
    

    // And this one automatically becomes an action
    increaseTimer() 
        this.secondsPassed += 1
    

更多信息在这里:

https://mobx.js.org/react-integration.html

https://mobx.js.org/migrating-from-4-or-5.html

【讨论】:

即使从 decorate 更改为 makeAutoObservable 得到错误“[MobX] 'makeAutoObservable' 只能用于没有超类的类” 我的代码:import observable, action, makeAutoObservable from “mobx”;类 ConversionsStore 转换 = []; setConversions(conversions) this.conversions = 转换; ConversionsStore = makeAutoObservable(ConversionsStore, Conversions: observable, setConversions: action );导出 ConversionsStore ; 正如我在答案中所说,您需要在目标类的构造函数中执行此操作【参考方案2】:

我一直在使用 mobx,我可以导入装饰。我的 mobx 版本是 5.9.4

【讨论】:

以上是关于无法从 mobx 导入装饰的主要内容,如果未能解决你的问题,请参考以下文章

markdown CRACO用于使用Mobx装饰器

MobX基础 ----- 类的静态属性和装饰器

react+mobx 编写 withStoreHistory 装饰器

mobx5的简单使用——异步请求数据的位置问题

mobx5的简单使用——异步请求数据的位置问题

如何让 MobX 装饰器与 Create-React-App v2 一起工作?