无法从 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 导入装饰的主要内容,如果未能解决你的问题,请参考以下文章