Ich habe ein React
-Modul, das in ES5
funktioniert. Ich wandle es in ES6
um und verwende 6to5
für die Umwandlung. Alles läuft gut, aber ich bekomme einen Laufzeitfehler, wenn ich versuche, meine props
einzustellen. Wenn ich eine debugger
fallen lasse und this
betrachte, sehe ich, dass this
die EventEmitter
ist und nicht die Klasse. Hier ist mein Code:So lösen Sie `this 'beim Umwandeln von React-Modul in ES6-Klasse
var React = require('react');
import CalendarStore from './../stores/calendar.store.js';
function getAppointments() {
return {appts: CalendarStore.getAppts()}
}
export default class extends React.Component{
constructor(props) {
super(props);
this.props = {
view: 'weeks'
}
}
changeView(child, view) {
this.setProps({view: view});
}
componentWillMount() {
CalendarStore.addChangeListener(this._onChange);
}
_onChange() {
this.setProps(getAppointments());
}
....
};
Der Ort, wo ich das Problem habe in meiner changeView
Funktion. Wenn es transpiled
nach unten sieht es so aus:
_onChange: {
value: function _onChange() {
this.setProps(getAppointments());
},
writable: true,
configurable: true
}
Auch innerhalb dieser Funktion ist this
meine EventEmitter
. Wie kann man das beheben?
Können Sie mir einen Blog zeigen oder irgendwo, wo erklärt wird, wie Geschäfte von Mixins gehandhabt werden sollen? – jhamm
Die meisten Flussmittelimplementierungen bieten eins. Das Mixin verarbeitet den Anfangszustand aus dem Speicher, hört den Speicher ab und führt bei Änderungen einen this.setState aus. Außerdem wird der Listener bereinigt, wenn die Komponente deaktiviert wird. Hier ist ein Beispiel für einen [fluxxor store mixin] (http://fluxxor.com/documentation/store-watch-mixin).html) – FakeRainBrigand
@FakeRainBrigand Was ist, wenn ich auch Flow verwende und einen Standardwert wie diesen einstelle? '_handleStoreChange = (state: Object = {}) => {..}' Ich bekomme einen Syntaxfehler mit babel 'Assigning to rvalue' – tsm