2016-12-14 6 views
7

так я создал приложение с реагировать без конфигурации от https://facebook.github.io/react/blog/2016/07/22/create-apps-with-no-configuration.htmlmobx + реагирует неожиданный маркер

Я установил mobx и mobx реагирую, но все еще показывает ошибку неожиданных маркеров перед @ 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' является декоратор используется для React компонентов. Если вам нужны наблюдаемые данные, вы должны использовать декоратор '@ observable'. – Tholle

+0

Независимо от того, что я использую, когда я использую @ symb, он останавливается прямо там. Поэтому я думаю, что mobx установлен неправильно –

+1

О, я неправильно понял. Я думаю, это потому, что create-response-app не поддерживает декораторов ('@') вообще. Я не думаю, что MobX является виновником здесь. Вместо этого вы можете попробовать [** mobx-реактивный шаблон **] (https://github.com/mobxjs/mobx-react-boilerplate). – Tholle

ответ

8

create-react-app не поддерживает декораторов (@). Вы можете либо eject create-react-app, чтобы добавить его самостоятельно, настроить свою собственную среду с нуля или использовать что-то вроде mobx-react-boilerplate в качестве отправной точки.

Я лично использовал react-app-rewired с mobx extension с большим успехом.

+0

Я построил стартовый комплект с CRNA, который, если его использовать с nodejs 6.0, отлично работает с декоратором, проектная документация для него доступна по адресу https://wcandillon.github.io/react-native -do-documentation/docs/ – wcandillon

4

Вы можете использовать синтаксис, который не использует декораторы (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(); 
1

Вы пропустили пакеты после запуска npm run eject (как создать реагирующее-приложение не поддерживают декоратор).

Run 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" 
    ] 
}, 
+0

Я думаю, вы должны добавить 'transform-class-properties' в массив плагинов Babel. –

Смежные вопросы