2017-06-18 68 views
0

我在整個代碼中只有一個this.setState調用,這是在構造函數中,但我得到setState錯誤。爲什麼我不能在組件的構造函數中設置狀態?

我它降低到下面的代碼爲清楚起見:

import React, { Component } from 'react'; 

class App extends Component { 
    constructor() { 
    super(); 
    this.setState({ 
     hello: 'nothing' 
    }); 
    } 

    render() { 
    return (
     <div></div> 
    ); 
    } 
} 

export default App; 

的誤差如下: Image

proxyConsole.js:56警告:setState(...):只能更新一安裝或安裝部件。這通常意味着您在未安裝的組件上調用了setState()。這是一個沒有操作。請檢查App組件的代碼。

爲什麼會發生這種情況,我該如何在構造函數中設置狀態?

回答

3

當您在構建組件時設置初始狀態時,請直接設置this.state,請勿使用this.setStatesetState只能在組件已被安裝時使用,並且在構造器中組件有而不是已被安裝 - 因此直接設置狀態。每the React documentation

constructor()

constructor(props)

安裝之前它的陣營組件構造函數被調用。 [...]

構造函數是初始化狀態的正確位置。如果您沒有初始化狀態並且沒有綁定方法,則不需要爲您的React組件實現構造函數。

constructor() { 
    super(); 
    this.state = { 
    hello: 'nothing' 
    }; 
} 

the React documentation

您可分配this.state是構造函數的唯一地方。

+0

這可能是我曾經犯過的最愚蠢的錯誤。對不起,我已經回覆了一段時間,但謝謝。如果有人遇到這個問題,我會留下來。 – amingilani

相關問題