2017-09-22 31 views
0

我在那裏他們可以編輯自己的信息(電話號碼,電子郵件等)類型錯誤:無法讀取屬性「名」空

我無法訪問輸入的namesetState回調內部用戶對象的並繼續得到TypeError: Cannot read property 'name' of null

但是,當我登錄event.target.name它顯示在那裏。

當我改變它的工作原理一個簡單的狀態:

假設狀態值是相同的目標名稱。

this.setState({ [event.target.name]: value }); 

我下面this後更新用戶對象。

對不起,如果這是重複的,我找不到我在找什麼。

handleUserChange(event) { 
    console.log(event.target.name); 
    const value = event.target.value 
    this.setState(prevState => ({ 
     user: {...prevState.user, [event.target.name]: value } 
    })) 

    } 

編輯:我正確地結合它在類的構造函數,像這樣:

contructor(props) { 
    super(props); 
    ... 
    this.handleUserChange = this.handleUserChange.bind(this) 
} 
+0

你會得到一個console.log的值? – HolyMoly

+0

您可以向我們展示_render_方法中將_handleUserChange_綁定到組件的代碼嗎? –

回答

3

REACT爲回收此事件。所以異步調用setState不知道event.target.name的值,因爲事件已經消失。您需要製作與event.target.value相同的值。

handleUserChange(event) { 
    console.log(event.target.name); 
    const name = event.target.name; 
    const value = event.target.value; 
    this.setState(prevState => ({ 
     user: {...prevState.user, [name]: value } 
    })) 

    } 

從文檔:link

其他溶液:

handleUserChange(event) { 
    event.persist(); 
    const value = event.target.value; 
    this.setState(prevState => ({ 
     user: {...prevState.user, [event.target.name]: value } 
    })) 

    } 

仍然存在的情況下的值。

+0

這個伎倆!我不知道React回收事件。這是否包含在文檔中? – Simon

+0

我在回答中發佈了一個包含相關文檔的鏈接。 –

相關問題