【发布时间】:2021-03-17 20:26:55
【问题描述】:
我在 rootReducer 中有 redux 选择器:
export const getUser = (state) => fromUser.userGetter(state.user);
export const getUsers = (state) => fromUsers.getUsers(state.users);
// this one is just a function where 1st parameter is array, 2nd is string of ID
export const getUserNameById = (users, id) => {
let user = ''
if(users)
user = users.find(user => user._id === id).name
return user
}
// this one is selector, which does work fine
export const getUserName = createSelector([getUsers, getUser], (users, id) => {
let user = ''
if(users)
user = users.find(user => user._id === id).name
return user
});
但是当我尝试这样做以保存代码行时:
export const getUserName = createSelector([getUsers, getUser], getUserNameById (getUsers, getUser));
它告诉我 getUsers.find 不是一个数组,实际上当我使用 console.log(getUser) 时它不会从商店返回一个数组,而是返回一个函数 getUsers(state)。有什么想法我应该怎么做?谢谢!
【问题讨论】:
-
快速猜测:你不应该只是传递 getUserNameById(函数的实例)而不是调用它并将结果传递给 createSelectors 第二个参数运行时,它编译为 `getUserName = cS([ ...], user.name) 虽然,我会认为这里写的代码会是一个语法错误,所以 shrugs
标签: reactjs redux react-redux reselect