使用选择器获取相关项目

时间:2018-12-14 07:19:11

标签: javascript reactjs redux

我正在使用React和Redux来获取帖子,每个帖子都有一个用户。我的归一化数据如下

{
    entities: {
        posts: {
            4: {
                name: 'Post 4',
                user: 5
            }
        }
        users: {
            5: {name: 'User 5'}
        }
    },
    post: {
        id: 4
    }
}

我正在使用选择器来获取当前帖子

post: getPost(state.entities.posts, 4)


export const getPost = (posts, id) => posts[id];

如何获取此特定帖子的用户名?

我想知道在使用该选择器的帖子中获取用户信息的一种好方法。

2 个答案:

答案 0 :(得分:1)

也许是这样吗?

export const getPost = (posts, id) => {
  const post = posts[id];
  post.user = state.entities.users[post.user].name;
  return post;
}

答案 1 :(得分:1)

我将创建两个特定的选择器来检索帖子和用户

const getPost = (posts, postId) => posts[postId]
const getUser = (users, userId) => users[userId]

然后是将两者结合在一起的“复杂”选择器

const getPostUser = (state, postId) => {
    const userId = getPost(state.posts, postId).user
    return getUser(state.users, userId)
}