onTypeSelect (str) {
this.setState({taskType: str})
}
<TouchableOpacity onPress={this.onTypeSelect('type1').bind(this)}>
</TouchableOpacity>
未定義不是對象(正在評估'_this3.onTypeSelect('type1).bind')。我在調用帶參數的函數時出錯了
任何人都可以幫助我嗎?我是反應原生的初學者。
onTypeSelect (str) {
this.setState({taskType: str})
}
<TouchableOpacity onPress={this.onTypeSelect('type1').bind(this)}>
</TouchableOpacity>
未定義不是對象(正在評估'_this3.onTypeSelect('type1).bind')。我在調用帶參數的函數時出錯了
任何人都可以幫助我嗎?我是反應原生的初學者。
試試這個
onTypeSelect (str) {
this.setState({taskType: str})
}
<TouchableOpacity onPress={() => { this.onTypeSelect('type1'); }} />
當你.bind(本),你需要傳遞一個函數,而不是函數的返回值,在這種情況下,undefined
。這種方式起作用,因爲該功能是從組件範圍內調用的,因此使this
成爲有效的參考。
另一種方式來解決這個問題是通過使用綁定是這樣的:
this.onTypeSelect.bind(this, 'type1')
編輯:感謝您的意見和對方回覆,我增加了完成信息的緣故信息。 Alexander T.,Bartek F.
它的工作原理!謝謝。 – mojizo
您的代碼有效,但解釋不正確。 *當你.bind(this)時,範圍是當前的HTMLDOMElement,* - 這不是真的。 'this'指向綁定時的組件。問題是應該在函數本身使用'bind',而不是函數返回的結果。有關詳細說明,請參閱@Alexander .answer –