在setState中添加新项目

时间:2018-12-10 16:28:40

标签: reactjs state

我已经在我的吸尘器中声明了我的状态,我想从一个函数中添加一个新项目,但是它不起作用。我的状态仍然是空的。

我的构造函数:

   constructor(props) {
    super(props);
    this.state = {

    };
    this.myMethod= this.myMethod.bind(this);
    this.myMethod();

我的方法:

    myMethod(){
    {this.props.routes.map((prop, key) => {
      if(prop.subMenus != null){
        const openSubMenuName = 'openSubMenu'+prop.code;
        this.setState({
          openSubMenuName:true
        });
      }
    })}

    console.log(this.state);
  }

1 个答案:

答案 0 :(得分:0)

我将代码放在:

      componentDidUpdate(){
    {this.props.routes.map((prop, key) => {
      if(prop.subMenus != null){
        const openSubMenuName = 'openSubMenu'+prop.code;
        console.log(openSubMenuName);

        this.setState({
          [openSubMenuName]:true
        });
      }
    })}
  }

但是会导致无限的治疗 超过最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的setState时,可能会发生这种情况。 React限制了嵌套更新的数量,以防止无限循环。