2016-12-14 41 views
7

所以我創建一個應用程序與沒有配置我安裝mobx和mobx反應的反應從https://facebook.github.io/react/blog/2016/07/22/create-apps-with-no-configuration.htmlmobx +反應意外的標記

,但仍顯示意外的標記的@ 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(); 
+0

'@ observer'是用於你的反應的組分的裝飾。如果你想要可觀察的數據,你應該使用裝飾器'@ observable'。 – Tholle

+0

無論我使用什麼,當我使用@ symb時,它就停在那裏。所以我認爲mobx沒有正確安裝 –

+1

哦,我誤解了。我認爲這是因爲create-react-app根本不支持裝飾器('@')。我不認爲MobX是這裏的罪魁禍首。您可以嘗試使用[** mobx-react-boilerplate **](https://github.com/mobxjs/mobx-react-boilerplate)。 – Tholle

回答

8

create-react-app不支持裝飾器(@)。您可以使用eject create-react-app來自己添加它,從頭開始創建您自己的環境,或者使用諸如mobx-react-boilerplate之類的東西作爲您的起點。

我個人使用react-app-rewiredmobx extension取得了巨大成功。

+0

我構建了一個CRNA入門工具包,如果與nodejs 6.0一起使用可以很好地與裝飾器一起使用,那麼它的項目文檔可以在https://wcandillon.github.io/react-native -do-documentation/docs/ – wcandillon

4

您可以使用提供的不使用裝飾器的語法(herehere)。

下面是一個使用你提供的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(); 
1

您正在運行npm run eject後失蹤包(如創建反應的,應用程序不支持裝飾)。

運行npm install --save-dev babel-plugin-transform-decorators-legacy babel-plugin-transform-class-properties

然後將以下通天配置添加到您的package.json

"babel": { 
    "plugins": [ 
    "transform-decorators-legacy" 
    ], 
    "presets": [ 
    "react-app" 
    ] 
}, 
+0

我想你應該把'transform-class-properties'添加到Babel插件數組中。 –