React Redux替换数组中的整个对象

时间:2017-11-05 22:22:36

标签: reactjs redux

我正在学习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}

它可以正常工作,因为我正在替换作为我的状态的一部分的对象项的整个状态,但它是更新对象的正确方法吗?或者我应该只更新属性名称?如果是这样,我应该如何进入该物业?

考虑到只有一个对象,所以我没有看到为它实现地图的重点。

非常感谢任何帮助。

0 个答案:

没有答案