Javascript:字符串数组未更新

时间:2019-12-11 22:24:58

标签: javascript reactjs ecmascript-6

我正在尝试将更新的testvar传递给ComponentX

let testvar = ["Test", "Test2"];
testvar.map(test => {
test = test + "Edited";
console.log(test);//updates here
return test;
 });
console.log(testvar);//doesn't retrieve updated value
<ComponentX values={testvar}>

我知道控制台不是异步的,但是我还将这个更新的值传递给组件, 但是原版通过了。 我试图将此更新包装为异步功能,如下所示,

let testvar = ["Test", "Test2"];
const updateFunc = async()=>{
await testvar.map(test => {
test = test + "Edited";
console.log(test);//updates here
return test;
});
} 
const updatedvalues = updateFunc();   
<ComponentX values={updatedvalues}>

我收到错误,因为诺言String []在ComponentX上不可接受。 任何潜在客户都会有所帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

您将字符串视为可变的,但实际上没有。在这种情况下,您需要按索引

更新数组
let testvar = ["Test", "Test2"];
testvar.forEach((test,i) => {
testvar[i] = test + "Edited";
console.log(test);//updates here
});
console.log(testvar);

或创建一个新的

testvar = testvar.map(test => {
  test = test + "Edited";
  console.log(test);//updates here
  return test;
 });