mobx-领先的装饰器必须附加到类声明中

gra*_*han 4 reactjs mobx

我目前正在与React一起开发Electron应用程序。我偶然发现了MobX,想尝试一下,但是我的代码无法正常工作

我想使用MobX装饰器,但是当我尝试运行代码时,出现以下错误消息:

Leading decorators must be attached to a class declaration
Run Code Online (Sandbox Code Playgroud)

我的应用程序将数据存储在nedb的数据存储中,我想用mobx观察它们。

因此,例如,如果我有以下代码:

import { observable } from 'mobx';
import Datastore from 'nedb';

@observable projectsDb = new Datastore({
    filename: __dirname + './projects.json',
    autoload: true,
    timestampData: true,
});

export default projectsDb;
Run Code Online (Sandbox Code Playgroud)

启动电子应用程序时,请使用以下命令:

"browserify -t [ babelify --presets [ react es2015 stage-1] --plugins [transform-decorators-legacy] ] app/app.jsx -o app/js/app.js && stylus app/css/styles.styl -o app/css/styles.css && electron app/main.js",
Run Code Online (Sandbox Code Playgroud)

还将所有devDepenendencies和Dependencies添加到我的package.json中。

我的“开始”命令是否有任何错误,或者此处对可观察的概念有任何误解?

提前致谢 :)

mwe*_*ate 6

装饰器(通常)不能应用于变量,只能应用于类和属性。但是,observable也可以作为函数调用(因此不带@),然后您也可以将对象放入其中。

PS请注意,MobX确实会修改外部库的内部,因此将您的整个数据库类传递给observable不会神奇地使您的整个数据库库具有反应性,它只会创建对数据库的可观察引用


jav*_*bat 5

您可以在装饰器后删除分号:

把这个:

@inject(CssAnimator);
Run Code Online (Sandbox Code Playgroud)

对此:

@inject(CssAnimator)
Run Code Online (Sandbox Code Playgroud)