gpt4 book ai didi

javascript - 重置数组并重新渲染组件

转载 作者:行者123 更新时间:2023-11-30 14:05:07 27 4
gpt4 key购买 nike

我有一个数组,我用它来显示一个组件。该组件内部有一个下拉菜单。此下拉列表在更改时,其值将存储在主数组中设置的新数组中。还有一个 Reset 按钮,它将状态重置回之前的状态,并且应该重新渲染显示在选择任何内容之前的数据的组件。

enter image description here当我在更改下拉列表后单击重置时,它应该重置为页面加载时的状态。例如:完全访问代码如下:

class EditView extends Component {
state = {
accessData: [],
toBeDeleted: -1
};

componentDidMount() {
this.setState({ accessData: this.props.accData });
}

resetData = () => {
this.setState({ accessData: this.props.accData })
};

handleChange(value, index) {
let dataArr = this.state.accessData;
dataArr[index].relation = value;
this.setState({
accessData: dataArr
});
}

postData = () => {
const metaData ={
method: 'POST',
url: 'some API URL',
page: 'page',
data: this.state.accessData
}
this.props.dataSuccess(metaData); //makes a POST api call
}

render() {
const { accessData } = this.state;
return (
<>
{accessData.map((item, index) => (
<div>
<DataHeading>Relation: </DataHeading>
<Select
defaultValue={item.relation}
onSelect={e => this.handleChange(e, index)}
>
<Option value="married">Married</Option>
<Option value="partners">Partners</Option>
<Option value="siblings">Siblings</Option>
</Select>
</div>
))}

<ResetButton onClick={this.resetData}>Reset</ResetButton>
<UpdateButton onClick={this.postData}>Update</UpdateButton>
</>

问题是状态正在重置但未反射(reflect)在组件中。请帮帮我。我需要一个快速的解决方案。提前致谢。

最佳答案

你不应该改变现有的数组,而是分配一个新的数组,this堆栈溢出帖子讨论了原因。尝试以下操作:

resetData = () => {
this.setState({ accessData: [..this.props.accData] })
};

handleChange(value, index) {
let dataArr = [...this.state.accessData];
dataArr[index].relation = value;
this.setState({
accessData: dataArr
});
}

关于javascript - 重置数组并重新渲染组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55580050/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com