【问题标题】:React : setState in componentDidMount not causing infinite loop反应:componentDidMount 中的 setState 不会导致无限循环
【发布时间】:2017-03-29 13:36:18
【问题描述】:

我是 ReactJS 的新手。当我阅读 ReactJS 蓝图书的作者已经指定

"但请注意不要在这里运行 setState,因为这会触发 无限更新循环。”

所以,我创建了一个下面的简单组件,但我没有看到任何这样的无限循环发生。

'use strict';
import React from 'react';
import { render } from 'react-dom';
const App = React.createClass({
    displayName : "SG",
    getDefaultProps() {
        return {
            age : "24"
        }
    },
    getInitialState() {
        return {
            date : ""
        }
    },
    componentDidMount() {
        debugger;
        var d = new Date();
        this.setState({date: d.getMilliseconds().toString()});
    },
    render() {
        return (
            <section>
                <h1>Demo App</h1>
                <p>Name : {this.props.name}</p>
                <p>Age : {this.props.age}</p>
                <p>date : {this.state.date}</p>
            </section>
        );
    }
});
render (<App name='Gowtham S'/>, document.getElementById('container'));

我在 componentDidMount 中保留了调试器,但它只命中了一次。我的代码有什么问题,谁能帮助我?

谢谢

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    他说的是componentDidUpdate,而不是componentDidMount


    当你在componentDidUpdatesetState 时,由于组件应该更新,后者被再次调用,这导致无限递归。另一方面,componentDidMount 仅在初始渲染时调用。

    【讨论】:

    • 哦!是的,我放置了 componentDidUpdate 并看到发生了无限循环,感谢您的回答
    猜你喜欢
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2020-03-25
    • 2021-01-28
    相关资源
    最近更新 更多