【发布时间】:2015-06-07 12:40:08
【问题描述】:
我尝试在一个数组中定义一些步骤(我称它们为页面),并且每个页面都应该有可能在进入时调用一个函数。
我的页面定义在一个页面数组中,并且 nextHandler(自定义方法)设置当前页面索引并尝试调用定义的函数。我的 React 类看起来(缩写)是这样的:
var App = React.createClass({
pageDefinitions: [
{
title: "Page 1",
enterFunction: this.enterPageOne
}
],
enterPageOne: function() {
console.log("Something useful here");
},
nextHandler: function() {
var st = this.getState();
st.currentPageIndex = st.currentPageIndex + 1;
this.setState(st);
var page = this.pageDefinitions[this.state.currentPageIndex];
console.log(typeof page.enterFunction);
console.log(page.title);
if ( typeof page.enterFunction === "function") {
page.enterFunction();
}
},
getInitialState: function() {
return {
currentPageIndex = -1
};
},
render: function() {
return (
<div>Left out</div>
}
});
虽然title 在控制台上正确打印,但函数始终未定义。如何在我的数组中提供函数引用?
编辑:正如@gillesc 和@justin-morgan 指出的,这是范围问题(这是pageDefinition,而不是类)
编辑 2: 找到解决方案,我将 pageDefinitions 更改为 getPageDefinitions(),如下所示:
getPageDefinitions: funtion() {
var self = this;
return [
{
title: "Page 1",
enterFunction: selfenterPageOne
}
];
}
【问题讨论】:
-
pageDefinitions是一个对象数组,因此第一个对象中的this将引用数组内的对象,而不是您的主对象。所以基本上this.enterPageOne是未定义的。
标签: javascript reactjs