2016-09-26 5 views
0

Ich möchte ECMA statische Propotypen in meinem React-Code verwenden. Leider führt dies zu folgendem Babel-Fehler Missing class properties transform.. Soweit mir bekannt ist, liegt das daran, dass Meteor ECMA-Vorschläge der Stufe 0 noch nicht unterstützt.Die statischen ECMA7-Prototypen werden in Meteor noch nicht unterstützt. Was ist ein guter Workaround?

Aus dem Lesen verschiedener Threads scheint es möglich zu sein, dies zu lösen, indem einige babel configs geändert werden, aber ich bin nicht mit Babel vertraut, also würde es lieber vermeiden, damit zu viel zu tun. Wie kann ich die folgende statische/propotypische Logik in einer alternativen, unterstützten Weise ausdrücken?

Danke!

import React from 'react'; 
import bookSingleLine from '../Kooks/Table/BookSingleLine'; 
import TrackerReact from 'meteor/ultimatejs:tracker-react'; 


export default class bookListingTable extends TrackerReact(React.Component) { 

static propTypes = { 
LimitProp: React.PropTypes.number.isRequired 
    } 
static defaultProps ={ 
    LimitProp: 5, 
    } 
+1

Die machen verwandeln Sie suchen ist [Klasse-Eigenschaften-Transformation] (https://babeljs.io/docs/plugins/transform-class-properties/) und es ist tatsächlich auf Stufe 2 geschafft ([preset-stage-2] (http://babeljs.io/docs/plugins/preset- Stufe 2/)). Auf den verknüpften Seiten erfahren Sie, wie Sie die Voreinstellungen zu Ihrem Workflow hinzufügen können. – CodingIntrigue

+0

Vielen Dank für das Detail. Ich werde diese Voreinstellungen in Zukunft hinzufügen. – ElJefeJames

Antwort

2

einfach manuell die statischen Eigenschaften zuweisen, anstatt sie in der Klasse Körper zu erklären (die in ES7 wird nicht unterstützt):

export default class BookListingTable extends TrackerReact(React.Component) { 
    … 
} 
BookListingTable.propTypes = { 
    LimitProp: React.PropTypes.number.isRequired 
}; 
BookListingTable.defaultProps = { 
    LimitProp: 5 
}; 
+0

Dies ist der Ansatz, den ich verwenden würde. Die meisten Beispiele folgen dieser Konvention und Linters wird es nicht als ein Problem kennzeichnen. –

+0

Danke Bergi und Tim, genau das habe ich gesucht – ElJefeJames

0

Es gibt einen besseren Ansatz heute, es statische macht verwenden.

add the following package:

meteor npm install --save-dev babel-plugin-transform-class-properties 

Bearbeiten Sie Ihre package.json in Ihrem Projekt und es fügen Sie folgendes the package work:

"babel": { 
    "plugins": ["transform-class-properties"] 

    } 
Verwandte Themen