Tôi có mô-đun React
hoạt động tốt trong ES5
. Tôi đang chuyển đổi nó thành ES6
và sử dụng 6to5
để chuyển đổi. Tất cả mọi thứ transpiles tốt, nhưng tôi nhận được một lỗi thời gian chạy khi tôi đang cố gắng để thiết lập của tôi props
. Khi tôi thả một số debugger
và xem this
, tôi thấy rằng this
là EventEmitter
chứ không phải lớp. Đây là mã của tôi:Cách giải quyết `this` trong việc chuyển đổi mô-đun React thành lớp 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());
}
....
};
Địa điểm tôi gặp sự cố nằm trong chức năng changeView
. Khi nó là transpiled
xuống nó trông như thế này:
_onChange: {
value: function _onChange() {
this.setProps(getAppointments());
},
writable: true,
configurable: true
}
Một lần nữa, bên trong hàm, this
là EventEmitter
tôi. Cách sửa lỗi này là gì?
Bạn có thể chỉ cho tôi một blog hoặc một nơi nào đó giải thích cách cửa hàng nên được xử lý bởi mixin không? – jhamm
Hầu hết các triển khai thông lượng cung cấp một. Mixin xử lý trạng thái ban đầu từ cửa hàng, nghe cửa hàng và thực hiện điều này.setState khi có thay đổi. Nó cũng làm sạch người nghe khi các thành phần được unmounted. Đây là một ví dụ về một [mixux cửa hàng mixin] (http://fluxxor.com/documentation/store-watch-mixin.html) – FakeRainBrigand
@FakeRainBrigand nếu tôi cũng sử dụng lưu lượng và đặt giá trị mặc định như thế này thì sao? '_handleStoreChange = (state: Object = {}) => {..}' Tôi nhận được một lỗi cú pháp với babel 'Gán cho rvalue' – tsm