反応サイトがあり、特定のページで、次の方法でデータを選択しています。
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 で直接読み取ることで写真を置き換えます。正常に動作します。
何か不足していますか?彼らはまったく同じようです