Я использую синтаксис класса ES6, React.js и Flux для моего проекта. Это кусок кода:Есть ли другой элегантный способ сделать привязку к функции?
export default class Splash extends React.Component {
constructor() {
super();
this.state = Comm.reqSplash();
}
componentDidMount(){
this._appReadyBound = this._appReady.bind(this);
SplashStore.subscribe(this._appReadyBound);
}
//Trigger when app data is loaded, if splash is in non-intro mode then end splash
_appReady(){
SplashStore.unsubscribe(this._appReadyBound);
//If intro mode, do nothing
if (this.state.mode !== "non-intro") return;
this.endSplash();
}
}
Как вы можете видеть, в методе «componentDidMount», я должен создать связанную версию метода «_appReady».
Если я не свяжусь с «этим», метод «_appReady» будет вести себя неправильно. Если я не создаю связанную версию, метод отмены подписки, который является таким же, как «removeChangeListener», если вы более знакомы с ним, не будет выполнять свою работу, а это значит, что слушатель все еще находится в списке слушателей.
Так что мне интересно, есть ли элегантный способ сделать привязку или избежать привязки. Или, может быть, я должен отказаться от синтаксиса класса ES6?
возможно дубликата [Могу ли я использовать ES6 жир стрелок в методах класса?] (Http://stackoverflow.com/a/31368520/1048572) или [React, "this", cloneElement и es6] (http://stackoverflow.com/q/31841949/1048572)? Дайте мне знать, помогли ли вам какие-либо из них. – Bergi