Javascript 使用选择器获取相关项

Javascript 使用选择器获取相关项,javascript,reactjs,redux,Javascript,Reactjs,Redux,我使用React和Redux来获取帖子,每个帖子都有一个用户。我的标准化数据如下 { entities: { posts: { 4: { name: 'Post 4', user: 5 } } users: { 5: {name: 'User 5'} } }, post: {

我使用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];
如何获取此特定帖子的用户名?


我想知道对于那篇文章,使用选择器获取用户信息的好方法是什么。

可能是这样的吗

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

也许是这样的

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

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

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)
}

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

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)
}

不知道你在问什么。您需要获取
getPath
的输出,并使用它在本例中检索id为5的用户?对不起,输入错误!应该是邮寄的。感谢您的通知。是否有getPost功能或您希望我们提供此功能?我没有完全理解你。我添加了getPost选择器函数,我想知道如何获取特定PostEdit的用户名。打字错误:)不知道你在问什么。您需要获取
getPath
的输出,并使用它在本例中检索id为5的用户?对不起,输入错误!应该是邮寄的。感谢您的通知。是否有getPost功能或您希望我们提供此功能?我没有完全理解你。我添加了getPost选择器函数,我想知道如何获取特定PostEdit的用户名。打字:)啊哈,这是一个很好的计划,在我的帖子选择器中预装数据,我甚至没想到!谢谢。啊哈,这是一个很好的计划,在我的帖子选择器中预加载数据,我甚至没有想到这一点!谢谢。这很困难,因为我总是将状态片传递给选择器,例如getPost(state.posts)、getUser(state.users),因为我读到选择器获取状态并从中返回项目。考虑到每次都必须传递状态,我想不可能使用上述方法?您可以将
state.entities
传递给
getpostaser
。编辑答案以匹配所需的API这很困难,因为我总是将状态片传递给选择器,例如getPost(state.posts)、getUser(state.users),因为我读到选择器获取状态并从中返回项目。考虑到每次都必须传递状态,我想不可能使用上述方法?您可以将
state.entities
传递给
getpostaser
。编辑答案以匹配所需的api