0
我试图从父母到孩子传递一个函数,但我得到“无法读取未定义的属性'getDays'”。为什么我得到未定义的反应道具
下面是从父片段:
getDays:function(){return this.state.days;},
...
renderComponents:function(){
if (typeof(this.state.days)==='undefined'){
var days = 0;
}else{
days = this.state.days;
}
console.log(days);
if (this.state.showWorkDoneMaintenance){
return <WorkDoneMaintenance
subjects={this.props.subjects}
workdone={this.props.workdone}
getDays={this.getDays}
/>;
}
然后在这里的孩子:
var WorkDoneMaintenance = React.createClass({
...
renderWorkDoneItems:function() {
var items = [];
this.props.workdone.map(function(workdone){
if (TimeUtility.dateIsToday(workdone.createdAt,this.props.getDays())){
items.push(workdone);
}
});
return items.map((workdone) => (
<tr key={workdone._id}>
...
propTypes:{
getDays:React.PropTypes.func,
subjects:React.PropTypes.array,
workdone:React.PropTypes.array
}
});
它似乎并没有与那些获得通过阵列的任何问题(科目和workdone),但我似乎无法找出功能的问题。
变化'函数(workdone){'到'(workdone)=> {' –
是有你通过函数传递状态的原因是什么?为什么不通过'getDays = {this.state.days}',也如上面所说的dominic,你需要使用箭头函数,或者将'this'绑定到你的函数中,以便在相关的上下文中工作。 –
我试着将它作为一个状态传递,并有同样的问题,但我很乐意再次尝试。为什么要改变功能(workdone)为(workdone)=>帮助? – JohnL