web-dev-qa-db-ja.com

mobx +予期しないトークンに反応する

だから私は https://facebook.github.io/react/blog/2016/07/22/create-apps-with-no-configuration.html から構成なしで反応するアプリを作成しました

Mobxとmobx-reactをインストールしましたが、@ symbの前に予期しないトークンのエラーが表示されます。

他に何かを追加する必要がありますか、それとも現在の設定が間違っていますか?:(

package.json

"devDependencies": {
"react-scripts": "0.8.4",
"babel-core": "^6.7.6",
"babel-loader": "^6.2.4",
"babel-preset-es2015": "^6.6.0",
"babel-preset-react": "^6.5.0",
"babel-preset-stage-0": "^6.5.0"
},
"dependencies": {
"autobind-decorator": "^1.3.4",
"classnames": "^2.2.5",
"lodash": "^4.15.0",
"mobx": "^2.5.1",
"mobx-react": "^3.5.5",
"react": "^15.3.1",
"react-dom": "^15.3.1",
"validator": "^5.6.0"
 },

.babelrc

{
  "presets": ["es2015", "stage-0", "react"],
  "plugins": [
      "transform-decorators-legacy",
      "transform-class-properties"
  ]
}

そしてコード

import React, { Component } from 'react';
import { action, observable } from 'mobx'
import {observer} from 'mobx-react';


class App {
    @observer cake = [];
}

export default new App();
18

create-react-app はデコレータをサポートしていません(@)。 eject create-react-appを使用して自分で追加するか、独自の環境を最初からセットアップするか、または mobx-react-boilerplate を開始点として使用します。

私は個人的に react-app-rewiredmobx extension を使用しました=大成功。

17
Tholle

npm runject を実行した後、パッケージがありません(create-react-appはデコレーターをサポートしていないため)。

npm install --save-dev babel-plugin-transform-decorators-legacy babel-plugin-transform-class-propertiesを実行します

次に、以下のBabel設定をpackage.jsonに追加します

"babel": {
  "plugins": [
    "transform-decorators-legacy"
  ],
  "presets": [
    "react-app"
  ]
},
9
XPX-Gloom

デコレータを使用しない提供された構文を使用できます( here および here )。

次に、提供したAppクラスコードを使用した例を示します。

import React, { Component } from 'react';
import { action, extendObservable } from 'mobx'
import {observer} from 'mobx-react';


class App {
  constructor() {
    extendObservable(this, {
      cake = [],
    }); 
  }
}

export default new App();
6
mwarger