[英]How can I add a string to a string value inside an object?
我试图做的是在对象内部的值旁边添加一个字符串 id。 所以对象是这样的:
["John","Mike"]
一旦用户单击添加按钮,就会在对象中生成一个项目
const handleAddClick = () => {
setLanguage([...language, ""]);
};
const handleItemChanged = (event, index) => {
const value = event.target.value;
const list = [...subtitle];
if (list.filter((f) => f === value).length > 0) {
setErrorValidation("Names cannot be equal!");
} else {
setErrorValidation("");
}
list[index] = value;
setName(list)
};
在handleItemChanged 中,我尝试这样做,但没有成功。
let string = "test"
list[index] = value + string;
setName(list)
所以我想要的是将字符串添加到添加到列表中的新值
["Johntest", "Miketest"]
我该如何解决这个问题?
您可以在分配值之前使用map
:
// ... the other code is omitted for the brevity
list.map(item => item + "test")
setName(list)
一个例子:
let arr = ["John", "Mike"] arr = arr.map(item => item + " test") console.log(arr)
调用setName(list)
不会触发重新渲染,原因很简单, list
仍然是同一个对象。 setState
仅在先前值和新值不同时才有效。 对于对象,它们进行了浅层的比较。
这就是为什么建议使用.map()
创建一个新数组的原因:
let string = "test"
const newList = list.map(e => e+urString)
setName(newList)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.