【发布时间】:2021-07-05 14:56:22
【问题描述】:
我正在尝试在调用函数时更新我的数组的特定索引的状态。但是,即使多次单击,该值也不会更新。
我从 componentDidMount 中的 const EDITABLES 中提取了以下数组:
values = EDITABLES.map((data) => {
return {
id: data.id,
value: financials[data.id],
table: data.table,
add: false,
minus: false,
};
});
this.setState({
values,
});
渲染时我像这样映射数组:
{EDITABLES.map((data, index) => {
console.log(values[index]?.add, "bool"); //despite calling a function to change the state of add in values it remains the same
return (
<Row
key={index}
style={{
gridTemplateColumns: "22% 25% 2% 25% 25% 21%",
display: "grid",
}}
>
<p>
{data.name}
</p>
<div>
<CompleteButton //CompleteButton is a styled div
isAdd={values[index]?.add}
onClick={() => {
this.changeFalse(index) //function call
}}
>
</CompleteButton>
</div>
这就是 changeFalse 函数的样子:
changeFalse(index) {
this.setState((prevState) => ({
values: {
...prevState.values,
[prevState.values[index].add]: !prevState.values[index].add,
},
}));
}
无论我点击多少次按钮,它都不会更新和sti;;仍然是“假”,我不知道为什么
【问题讨论】:
-
你可以尝试像这样将索引作为参数传递给箭头函数吗 onClick={(index) => { this.changeFalse(index) //函数调用 }}
标签: javascript reactjs