我正在学习Redux,我对更新对象状态有疑问。
假设我有以下初始状态 - 一个包含一个对象的数组,就会从列表中过滤掉该对象。
export const initialState = {
posts: []
};
我想要更新帖子的标题和正文。新对象来自具有更新名称的API响应。
我创建了这个减速器
export const postReducers = (state = initialState.posts, action) => {
switch (action.type) {
case type.EDIT_POST:
const {postEdit} = action;
console.log('EDIT_POST STATE FROM REDUCER', postEdit);
return [...postEdit];
case type.DELETE_POST:
const {postId} = action;
console.log('DELETE_POST FROM REDUCER', postId);
return [...state.filter(p => p.id !== postId)];
default:
return state
}
};
当帖子更新后,它会在地图中使用,所以我需要一个数组。
{
posts.map(post => (
<PostsList key={post.id}
voteUp={() => this.onVote(post.id, 'upVote')}
voteDown={() => this.onVote(post.id, 'downVote')}
postId={post.id}
postVoteScore={post.voteScore}
postTitle={post.title}
commentsCount={post.commentCount}
postTimestamp={new Date(post.timestamp).toDateString()}
/>))
}
this.props.postEdit发送PUT方法中使用的有效负载。
this.props.postEdit(savedPost.id, {title: postTitle, body: postTextArea}
它可以正常工作,因为我正在替换作为我的状态的一部分的对象项的整个状态,但它是更新对象的正确方法吗?或者我应该只更新属性名称?如果是这样,我应该如何进入该物业?
考虑到只有一个对象,所以我没有看到为它实现地图的重点。
非常感谢任何帮助。