我怎样才能在 react redux-toolkit 中实现这一点?
How can I achive this in react redux-toolkit?
因此,我在页面中映射了 posts 数组。当我点击每个 post 时,它将以模式打开。
Posts 有一个喜欢的按钮,所以我希望当用户喜欢 post 时它以模式打开它会自动更新 post 喜欢该提要中的所有状态post 已映射。
现在,当我喜欢 post 时,我会在负载中收到以下响应:
{
id: "620ca78f3b36d45714ca4c1e"
postId: "6dks2b92bjd99sndkd9j3",
liked: true
msg: "You liked the post."
success: true
}
现在的问题是如何从 post 数组更新 likes 数组。
单一Post结构
{
_id,
...other,
likes: [],
}
const updatedPost = (find that specific post from the array using the postId I recieved and update its likes array)
return {
...state,
loading: false,
error: null,
post: [...state.posts, updatedPost],
data: payload,
};
首先,您必须通过 ID 或您正在使用的任何唯一实体找到特定 post 的索引。然后通过向其分配新的 post 详细信息来更改该索引处的 posts 数组。
const postIndex = state.posts.findIndex((p)=>p.id===payload.id);
let posts=[...state.posts];
if(postIndex!=-1){
posts[postIndex]=updatedPost; // updatedPost Object whatever you want to change
// for appending likes i.e.,
// posts[postIndex].likes.push('id') // sample
}
state.loading=false; // use this scheme for updating state
state.error=null;
state.posts=posts;
state.data=payload;
因此,我在页面中映射了 posts 数组。当我点击每个 post 时,它将以模式打开。
Posts 有一个喜欢的按钮,所以我希望当用户喜欢 post 时它以模式打开它会自动更新 post 喜欢该提要中的所有状态post 已映射。
现在,当我喜欢 post 时,我会在负载中收到以下响应:
{
id: "620ca78f3b36d45714ca4c1e"
postId: "6dks2b92bjd99sndkd9j3",
liked: true
msg: "You liked the post."
success: true
}
现在的问题是如何从 post 数组更新 likes 数组。
单一Post结构
{
_id,
...other,
likes: [],
}
const updatedPost = (find that specific post from the array using the postId I recieved and update its likes array)
return {
...state,
loading: false,
error: null,
post: [...state.posts, updatedPost],
data: payload,
};
首先,您必须通过 ID 或您正在使用的任何唯一实体找到特定 post 的索引。然后通过向其分配新的 post 详细信息来更改该索引处的 posts 数组。
const postIndex = state.posts.findIndex((p)=>p.id===payload.id);
let posts=[...state.posts];
if(postIndex!=-1){
posts[postIndex]=updatedPost; // updatedPost Object whatever you want to change
// for appending likes i.e.,
// posts[postIndex].likes.push('id') // sample
}
state.loading=false; // use this scheme for updating state
state.error=null;
state.posts=posts;
state.data=payload;