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

不思議なことに、2 つのコメントを削除すると、次のようになります。 //const photoIds = ideabookPhotos[ideabookId] //const photos = photoIds && photoIds.map(photoId => state.photos.photos[photoId]).filter(x => x!=undefined)

セレクターからではなく、mapStateToProps で直接読み取ることで写真を置き換えます。正常に動作します。

何か不足していますか?彼らはまったく同じようです

4

0 に答える 0