[英]How can I accumulate string values in useState as an array value in React?
[英]In React Hook, how can I change specific value of useState array?
let [_value, setValue] = useState([1, 2, 3, 4, 5, 1, 2, 3, 4, 5 ]);
在这段代码中,如果我想更改 _value[3] 如何使用 setValue 更改值?
在我的项目中,单击(评级)按钮时,我必须更改 _value[index] 。
所以我必须动态改变_value[index]。
如果你知道答案,请告诉我。 谢谢!
在 React 中,您需要返回一个新的 state 数组引用。 您可以通过将之前的 state 映射到下一个 state 来实现这一点,使用索引进行匹配,当索引匹配时返回新值,否则返回当前值。
const updateByIndex = (newValue, index) => {
setValue(values => values.map((value, i) => i === index ? newValue: value);
};
通常有几种方法可以更新 JavaScript 中的 arrays。 重要的是,无论你做什么,你都要确保你不会改变现有的state 。
一种方法是制作数组的浅拷贝,改变拷贝,并设置新的 state:
function update(index, newValue) {
// shallow copy
const newArray = [..._value];
// mutate copy
newArray[index] = newValue;
// set state
setValue(newArray);
}
另一种选择是map
在数组上,当索引与所需索引匹配时返回新值。
function update(index, newValue) {
const newArray = _value.map((v, i) => {
if (i === index) return newValue;
return v;
});
setValue(newArray);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.