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

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

提前致谢

Screenshot

【问题讨论】:

  • 请不要上传图片,如果可能的话在这里粘贴错误和代码。

标签: node.js reactjs decorator mobx


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 2020-08-27
    相关资源
    最近更新 更多