2016-06-10 54 views
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),但我似乎无法找出功能的问题。

+0

变化'函数(workdone){'到'(workdone)=> {' –

+0

是有你通过函数传递状态的原因是什么?为什么不通过'getDays = {this.state.days}',也如上面所说的dominic,你需要使用箭头函数,或者将'this'绑定到你的函数中,以便在相关的上下文中工作。 –

+0

我试着将它作为一个状态传递,并有同样的问题,但我很乐意再次尝试。为什么要改变功能(workdone)为(workdone)=>帮助? – JohnL

回答

相关问题