繁体   English   中英

如何将字符串添加到对象内的字符串值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM