我有两个来自同一类的不同状态。
出于某种原因,两者都通过this.setState({selectedRecord: newValue})
:进行更新
selectedRecord: ModelClass,
question: Array<ModelClass>,
状态question
在表中用于呈现所有数据,状态selectedRecord
是所选行的副本,用于通过Form修改行。
<Button type="primary" icon={<EditOutlined />} onClick={() => {
this.setState({ selectedRecord: record }, () => {
this.setState({ modalVisible: true });
});
}} />
因此,在表格中,我通过输入、复选框修改状态selectedRecord
。。。并用setState完成它,但问题是这些更改也会使question
状态发生变化。
您的dropdownItems
已发生突变,请尝试从下拉项Temp.group = [...this.state.dropdownItems][index].group
中检索数据
执行此操作时:
let Temp = this.state.selectedRecord;
Temp.group = this.state.dropdownItems[index].group;
Temp.free = this.state.dropdownItems[index].free;
您实际上修改了之前选择的记录的属性(突变(。因此,您现在使它看起来像您的下一个选定的。如果它包含对以前记录的引用,则会影响您的问题状态。
目前尚不清楚为什么您似乎首先需要检索之前选择的记录,而不是仅用例如:设置下一个记录
// No need for Temp at all
this.setState({ selectedRecord: this.state.dropdownItems[index] });