6

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

Leading decorators must be attached to a class declaration

我的应用程序将数据存储在 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;

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

"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",

此外,所有 devDependencies 和 Dependencies 都添加到我的 package.json 中。

我的“开始”命令中是否有任何错误或对 observable 的概念有任何误解?

4

2 回答 2

8

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

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

于 2016-11-22T06:24:07.717 回答
5

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

转这个:

@inject(CssAnimator);

对此:

@inject(CssAnimator)
于 2017-05-06T10:29:28.983 回答