У меня есть модуль React
, который отлично работает в ES5
. Я конвертирую его в ES6
и используя 6to5
для преобразования. Все отлично переносится, но я получаю ошибку во время выполнения, когда пытаюсь установить props
. Когда я бросаю debugger
и смотрю this
, я вижу, что this
- это EventEmitter
, а не класс. Вот мой код:Как разрешить `this` при преобразовании модуля React в класс ES6
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());
}
....
};
место я имею вопрос в моей changeView
функции. Когда он transpiled
вниз это выглядит следующим образом:
_onChange: {
value: function _onChange() {
this.setProps(getAppointments());
},
writable: true,
configurable: true
}
Опять же, внутри этой функции, this
мой EventEmitter
. Каков способ исправить это?
Можете ли вы показать мне блог или где-нибудь, что объясняет, как магазины должны обрабатываться mixins? – jhamm
Большинство реализаций потока обеспечивают одно. Mixin обрабатывает получение начального состояния из магазина, прослушивание магазина и выполнение this.setState при изменении. Он также очищает слушателя, когда компонент размонтирован. Вот пример [fluxxor store mixin] (http://fluxxor.com/documentation/store-watch-mixin.html) – FakeRainBrigand
@FakeRainBrigand, если я также использую поток и устанавливаю значение по умолчанию, как это? '_handleStoreChange = (state: Object = {}) => {..}' Я получаю синтаксическую ошибку с babel 'Assigning to rvalue' – tsm