2016-10-15 42 views
0

後未定義我有以下部件ReactJS「參考文獻」的組分「PROP」被更新

class DataEntryAndResearch extends React.Component<any, any>{ 
    render() { 
     return (
      <form className="task-form" 
       {this._possibleQuestions()[this.props.currentQuestion]} 
      </form> 
     ); 
    } 

    componentDidUpdate() { 
     console.log(this); 
     console.log(this.refs.formInput); 
    } 

    _possibleQuestions() { 
     return ([ 
      <div> 
       <FormInput 
        placeholder="Email" 
        ref="formInput" 
       /> 
      </div> 
     ]) 
    } 
} 

在上面的代碼中,所有我做的是一個在FormInput組件內ref"formInput")連接。然後我嘗試通過在componentDidUpdate方法中輸出它來在我的控制檯內看到formInput裁判。

問題是以下幾點。當組件第一次渲染時,this.refs.formInput輸出預期的對象(<FormInput />),但當this.props.currentQuestion得到更新時,將擦除formInput ref。每當我嘗試輸出formInput時,它返回「undefined」我不確定發生了什麼:/

回答

0

您應該bind功能this

請嘗試以下操作。

constructor(props) { 
    super(props) 
    this._possibleQuestions = this._possibleQuestions.bind(this) 
} 

添加這裏面你class

+0

它沒有工作:( 組件渲染後的第一時間,它輸出 '{的formInput道具:對象,背景:對象,裁判:對象,更新:對象,_reactInternalInstance:ReactCompositeComponentWrapper ...} 當'currentQuestion'道具更新時,它會輸出'null' :( – viiq