我設置一個使用內聯函數定義反應ref
render =() => {
return (
<div className="drawer" ref={drawer => this.drawerRef = drawer}>
然後在componentDidMount
的DOM參考未設置
componentDidMount =() => {
// this.drawerRef is not defined
我的理解是ref
回調應該在mount期間運行,不過addi ng console.log
報表顯示componentDidMount
被稱爲之前的ref回調函數。
其他代碼樣本顯示相同的假設,componentDidMount
後應在render
定義的任何ref
回調被稱爲,它甚至stated in the conversation
所以componentDidMount是在所有ref回調已經執行完 之後開除了?
是的。
我使用的反應15.4.1
別的東西,我已經試過
要驗證ref
函數被調用,我試着定義它的類本身
setDrawerRef = (drawer) => {
this.drawerRef = drawer;
}
然後在render
<div className="drawer" ref={this.setDrawerRef}>
在這種情況下控制檯日誌揭示了回調的確是被稱爲componentDidMount
我可能是錯的,但是當你使用render方法的箭頭函數時,它會從類的外部的詞法範圍中捕獲'this'的值。嘗試擺脫你的類方法的箭頭函數語法,看看它是否有幫助。 – Yoshi
這對我很好。您確定在DidMount之後引用回撥電話嗎?製作2個控制檯。登錄這兩個函數,看看哪一個是第一個 – GProst
我正在使用15.5.4 React – GProst