我有一个反应站点,在特定页面上,我通过以下方式选择一些数据:
export const selectAllPhotos = (state) => {
console.log("State = ", state.photos.photos)
return state.photos.photos
}
在控制台中,我打印出“state.photos.photos”。
在另一个选择器中,我使用之前定义的选择器:
export const selectIdeabookPhotos = createSelector(
selectAllPhotos,
selectIdeabookPhotoIds,
(allPhotos, photoIds) =>{
console.log("LOG => allPhotos", _.keys(allPhotos), allPhotos)
if(!photoIds) return null
return photoIds.map(photoId => allPhotos[photoId]).filter(x => x!=undefined)
//const photos = photoIds && photoIds.map(photoId => state.photos.photos[photoId]).filter(x => x!=undefined)
}
)
然而,奇怪的是,如果我在我的 mapStateToProps 中使用这个选择器,它永远不会被填充:
const mapStateToProps = (state, ownProps) => {
const ideabookId = ownProps.params.ideabookId
const {ideabooks, ideabookPhotos} = state.ideabooks
const ideabook = ideabooks[ideabookId]
const photos = selectIdeabookPhotos(state, ideabookId)
//const photoIds = ideabookPhotos[ideabookId]
//const photos = photoIds && photoIds.map(photoId => state.photos.photos[photoId]).filter(x => x!=undefined)
console.log("all photos => ", photos)
const {loggedInUser} = state.users
return {
ideabook,
photos: photos,
loggedInUser
}
}
奇怪的是,如果我删除这两条评论:
//const photoIds = ideabookPhotos[ideabookId]
//const photos = photoIds && photoIds.map(photoId => state.photos.photos[photoId]).filter(x => x!=undefined)
并且不是从选择器中替换照片,而是直接通过在 mapStateToProps 中读取它来替换照片,它工作正常。
我错过了什么吗?它们似乎完全相同