1

我有一个反应站点,在特定页面上,我通过以下方式选择一些数据:

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 中读取它来替换照片,它工作正常。

我错过了什么吗?它们似乎完全相同

4

0 回答 0