我試圖解決作出反應的惱人bind
要求如下屬性:擴展類和使用類的父類
class ExtendedComponent extends React.Component {
custom_functions: [];
constructor(props){
super(props);
let self = this;
for (let i = 0; i < this.custom_functions.length; i++) {
let funcname = this.custom_functions[i];
self[funcname] = self[funcname].bind(self);
}
}
}
class OrderMetricsController extends ExtendedComponent {
custom_functions: ['refreshTableOnDateChange', 'load', 'refreshTableOnTabChange'];
constructor(props){
super(props);
...
這將排除需要
this.refreshTableOnDateChange = this.refreshTableOnDateChange.bind(this);
現在,我得到TypeError: Cannot read property 'length' of undefined
問題是this.custom_functions.length
。
JavaScript沒有「屬性」。當你說「班級屬性」時,你的意思是什麼? –
'custom_functions:[...];'肯定看起來像'class'裏面的語法錯誤。你使用的是什麼風格的JavaScript? – Bergi
如果在ES6類語法中使用'bind'使你惱火,你是否考慮過_not_使用ES6類語法,並恢復使用'.createClass'和'createElement'等React幫助函數。 – Pineda