React SetState 不调用 render

2024-02-08

我将我的函数发送到子组件callBack。在父级中,我有一个函数setState method:

onInputUpdated(id){
  var array = {};
  let char = id.slice(-1);
  console.log(this.state.states)
  switch(char){
    case 'a':
      array[id] = this.getY(ReactDOM.findDOMNode(this.refs[id].refs.inp).value);
      break;
    case 'b':
      array[id] = this.getX(ReactDOM.findDOMNode(this.refs[id].refs.inp).value);
      break;
  }

  let oldStates = this.state.states;
  oldStates[id] = array[id];

  this.setState({
    states: oldStates
  });
  console.log(oldStates);
}

Where states是一个对象。

在这之后,states已设置。我可以在下一个中看到它callBack,我有打印到控制台。但是,那render方法未被调用。期间componentMount,一切都正确呈现。

该怎么办?谢谢。


当你这样做时let oldStates = this.state.states;你只是在做oldStates变量的引用this.state.states,所以你在调用之前有效地改变了状态setState.

例如,尝试复制它let oldStates = Object.assign({}, this.state.states,或使用lodash https://lodash.com/docs#cloneDeep或者类似的东西,如果你需要深度克隆。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React SetState 不调用 render 的相关文章

随机推荐