TL; DR:
我如何在嵌套数组中传播一个新对象,例如如何 data.posts.votes
同时保留所有现有状态 data
完整信息:
我获取的数据如下所示:
我想拥有一个upvote功能,可以将新vote
对象添加到votes
上面的屏幕截图中的数组中。
我现在真的没有计划如何在mutate函数中执行以下操作swr
:
现在我有这样的东西,但是那行不通:
mutate(
`/api/subreddit/findSubreddit?name=${fullSub.name}`,
(data) => {
console.log(data);
return {
...data,
posts: (data.posts[postid].votes = [
...data.posts[postid].votes,
{ voteType: "UPVOTE" },
]),
};
},
false
);
我如何乐观地对此进行更新?
我认为您的方法应该是这样的:
mutate(
`/api/subreddit/findSubreddit?name=${fullSub.name}`,
async (data) => {
console.log(data);
return {
...data,
posts: data.posts.map((post) => {
if (post.id === postid) {
return {
...post,
votes: [...post.votes, { voteType: "UPVOTE" }],
};
} else {
return post;
}
}),
};
},
false
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句