Reactjs 反应设置状态不';不要调用渲染

Reactjs 反应设置状态不';不要调用渲染,reactjs,callback,render,setstate,Reactjs,Callback,Render,Setstate,我将函数发送到子组件以进行回调。在父级中,我有一个带有setState方法的函数: 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);

我将函数发送到子组件以进行
回调
。在父级中,我有一个带有
setState
方法的函数:

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);
}
其中
表示
是一个对象

在此之后,
状态
被设置。我可以在下一个
回调
中看到它,在那里我可以打印到控制台。但是,不会调用
render
方法。在
componentMount
期间,所有内容都正确呈现


怎么办?谢谢。

当你这样做时,让oldStates=this.state.states您只是将
oldStates
变量作为对
this.state.states
的引用,因此在调用
setState
之前,您实际上是在更改状态


请尝试制作它的副本,例如
让oldStates=Object.assign({},this.state.states
,或者如果需要深度克隆,请使用或类似的方法。

我认为您正在设置它,然后重新设置。请尝试创建该对象的全新实例。下面是如何使用它

首先确保您运行以下命令

npm install --save underscore
然后导入下划线

import _ from 'underscore';
然后克隆对象

let oldStates = _.clone(this.state.states);
“要做什么”、“正确装载一切”…等等-这些都不是StackOverflow上要问的正确问题。请花一些时间根据帮助中心的输入编辑您的问题: