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上要问的正确问题。请花一些时间根据帮助中心的输入编辑您的问题: