在事件處理程序中存取React 實例(this)
問題:
嘗試問題:嘗試
問題:嘗試
問題:試試時在事件處理程序中使用this.setState 更新React狀態,您可能會遇到以下錯誤「無法讀取未定義的屬性『setState』」 或
「this.setState 不是函數」。這表示 this 關鍵字沒有引用事件處理程序中的元件實例。
說明:constructor(props) { super(props); this.state = { inputContent: 'startValue' }; this.changeContent = this.changeContent.bind(this); // Binding here }
在ES6 React 元件中,綁定到元件的函數應該定義在建構子或使用this.methodName.bind(this) 在渲染方法中顯式綁定。這是因為 JavaScript 箭頭函數語法(例如 () =>)建立了一個新的函數作用域,並且不會自動將其綁定到元件。
render() { return ( <input onChange={this.changeContent.bind(this)} /> ); }
方法一(綁定建構子):
方法
方法方法2(渲染中綁定):注意: 使用 React 時。 createClass,所有方法自動綁定到元件上其他修正:在程式碼中,React.refs.someref 應替換為this.refs.someref 以存取React 元素引用。此外,sendContent 方法需要使用上述任何一種綁定方法綁定到元件。以上是為什麼 `this.setState` 未定義或不是我的 React 事件處理程序中的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!