父组件是一个标题
子组件是一种表单,用于在触发 redux 操作的保存后更改出现在标题中的值。
我设置了子状态
constructor(props) {
super(props);
this.state = {
object: { ...props.object },
hidden: props.hidden,
};
}
表单用于渲染 state.object 和修改 state.object。当我修改 state.object 时,来自父组件的 props 也会改变。
handleObjectChange = (event, key, subkey) => {
console.log('props', this.props.object.params);
console.log('state', this.state.object.params);
event.preventDefault();
const value = this.handlePeriod(event.target.value);
this.setState((prevState) => {
const object = { ...prevState.object };
object[key][subkey] = value;
return { object };
});
}
控制台输出:
newvalueijusttyped
newvalueijusttyped
这种行为实际上一直到修改 redux 存储,而无需调度操作。
非常感谢这个问题的解决方案
更新:
将构造函数更改为此解决了问题
constructor(props) {
super(props);
this.state = {
object: JSON.parse(JSON.stringify(props.object)),
hidden: props.hidden,
};
}
为什么对象扩展运算符没有实现我想要实现的目标?