簡體   English   中英

未捕獲的類型錯誤:無法讀取 Component.setState 處未定義的屬性“enqueueSetState”

[英]Uncaught TypeError: Cannot read property 'enqueueSetState' of undefined at Component.setState

Counter組件保持為0 是否無處可去,以至於抓住了錯誤?

class Counter extends React.Component {

    constructor(props) {

        super(props)

        this.state = {
            count: 0
        }

        setInterval(this.setState, 1000, {
            count: this.state.count + 1
        })
    }

    render() {
        return <p>{this.state.count}</p>
    }
}

你的setInterval (和setState )語法應該是這樣的:

setInterval(() => {
  this.setState(state => ({
    count: state.count + 1
  }));
}, 1000)
  • setInterval需要一個函數和一個延遲(在你的情況下)。
  • setState可以接受一個對象或一個函數,在您的情況下,最好使用函數版本,因為下一個狀態取決於當前狀態。 由於setState是異步的,如果您使用對象版本,它可能會不同步。

運行示例:

 class Counter extends React.Component { constructor(props) { super(props) this.state = { count: 0 } setInterval(() => { this.setState(state => ({ count: state.count + 1 })); }, 1000) } render() { return <p > { this.state.count } < /p> } } ReactDOM.render(<Counter/>, document.getElementById('root'));
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> <div id="root" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM