2016-12-14 2 views
7

so habe ich eine App mit aus ohne Konfiguration reagieren https://facebook.github.io/react/blog/2016/07/22/create-apps-with-no-configuration.htmlmobx + reagieren unerwartetes Token

Ich installierte mobx und mobx reagieren, sondern zeigt immer noch den Fehler, unerwartetes Token vor @ symb.

Muss ich etwas anderes hinzuzufügen, oder meine aktuelle Konfiguration ist falsch? :(

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" 
    ] 
} 

Und der Code

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' der Dekorateur für Ihre React Komponenten verwendet. Wenn Sie beobachtbare Daten wünschen, sollten Sie den Dekorator '@ observable' verwenden. – Tholle

+0

Was auch immer ich benutze, wenn ich @symb verwende, stoppt es direkt dort. Also ich denke, dass Mobx nicht richtig installiert ist –

+1

Oh, ich missverstanden. Ich denke, das liegt daran, dass create-react-app keine Dekoratoren ('@') unterstützt. Ich glaube nicht, dass MobX hier der Schuldige ist. Sie könnten stattdessen die [** mobx-react-bottleplate **] (https://github.com/mobxjs/mobx-react-boilerplate) ausprobieren. – Tholle

Antwort

8

create-react-app unterstützt keine Dekoratoren (@). Sie könnten entweder eject create-react-app erstellen, um es selbst hinzuzufügen, richten Sie Ihre eigene Umgebung von Grund auf ein, oder verwenden Sie etwas wie mobx-react-boilerplate als Ihren Ausgangspunkt.

Ich habe persönlich react-app-rewired mit der mobx extension mit großem Erfolg verwendet.

+0

Ich baute ein Starter-Kit mit CRNA, dass, wenn mit Nodejs 6.0 funktioniert perfekt mit Decorator verwendet wird, ist die Projektdokumentation für sie verfügbar unter https://wcandillon.github.io/react-native -do-documentation/docs/ – wcandillon

4

Sie könnten die angegebene Syntax verwenden, die keine Dekoratoren verwendet (here und here).

Hier ist ein Beispiel des Klassencode App mit Ihnen zur Verfügung gestellten:

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

Sie Pakete fehlen nach npm run eject läuft (wie schaffen reagieren-App-Dekorateure nicht unterstützt).

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

Dann die folgende Babel Konfiguration zu Ihrem package.json hinzuzufügen ist

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

Ich denke, du solltest 'transform-class-properties' auch zum Babel-Plugins-Array hinzufügen. –