问题描述
我在svelte的数据存储区中有一个对象数组,我想更新数组中每个对象的一个属性,即我想将存储区中的author属性更新为当前用户名,这就是我目前正在做的事情:
let tempArray = $myReviewDataStore;
for(var i=0; i < tempArray.length; i++){
tempArray[i].author = username;
}
myReviewDataStore.update(data =>{
return tempArray;
})
一定有更好的方法来做到这一点,对吧?
谢谢!
解决方法
这只是一种较短的方法:
$myReviewDataStore = $myReviewDataStore.map(
obj => ({...obj,author: username})
);
,
嗯,我想您真的不需要逻辑的第一部分,因为data
道具包含store value:
update是一种采用一个参数(即回调)的方法。回调将现有商店值作为其参数,并返回要设置为商店的新值。
因此,您可以将其缩短:
myReviewDataStore.update(data => data.map(state => ({...state,author: username }) ));