2016-11-21 13 views
1

現在、Reactを使用してElectronアプリケーションを開発中です。私はMobXデコレータを使用したいが、私は自分のコードを実行しようとすると、私は次のエラーメッセージが表示されますMobXを偶然見つけて、それを試してみたかったが、私は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", 

また、すべてのdevDepenendenciesとの依存関係が私に追加されますpackage.json。

「スタート」コマンドにエラーがありますか、またはここで観察可能な概念に誤解がありますか?事前に

感謝:)(一般に)

+1

私は 'observable' dを考えますecoratorはクラスプロパティでのみ使用できます。 'projectsDb'をクラスプロパティにして、それが何か変わるかどうか調べてみてください。また、オブジェクトの中に 'projectsDb'をラップし、何か変更があるかどうかを確認しようとします(適切な解決策であるかどうかは分かりません。 –

+0

@DorWeidご意見ありがとうございます。私はクラスで私のprojectsDbをラップし、エラーなしで 'observable'デコレータを使用しました。今私は私のアプリケーションのロジックを動作させることができることを願っています。 – grahan

答えて

1

デコレータのみのクラスとプロパティに、変数に適用することはできません。しかし、observableもfuncionとして呼び出すことができます(したがって、@はありません)。

P.S.それはちょうどあなたがデコレータの後にセミコロンを削除することができますデータベース

+0

あなたの答えをありがとう。したがって、これらのデータストアをリアクティブにすることができれば、クラス内のデータストアをラップし、それらのデータストアの値を含む変数を宣言する必要があります。次に、この新しいクラスで、データベースを変更している変数をリフレッシュする関数を宣言しますか?これは動作しますか? – grahan

+0

これはいいスタートです。あなたのデータがオブザーバブルに保存されるとすぐに、それを処理することができます。アップデートなどでデータベースに同期するには、反応/自動実行を使用できます。そして、データベースの周りにはおそらくサブスクリプション機構がありますか?または単に最初の読み取りで同期する – mweststrate

+0

私はローカルデータベースとしてnedbを使用しています。それは悲しいことに私が知っている限り、購読方法はありません。私は、初期変数の同期を続けると思います。ご助力ありがとうございます。 – grahan

1

observable referenceを作成し、MobXはそう魔法のあなたの全体のデータベースのlibが反応することはありませんobservableにデータベース全体のクラスを渡し、外部ライブラリの内部を修正しないことに注意してください。

ターンこの:これに

@inject(CssAnimator); 

@inject(CssAnimator) 
関連する問題