I am trying to use createEntityAdapter
from reduxjs/toolkit
to generate selectors automatically.
I have created a "select all" selector successfully using create selector
:
export const selectEnvironmentsResult = extendedApiSlice.endpoints.getEnvironments.select()
export const selectAllEnvironments = createSelector(
selectEnvironmentsResult,
environmentsResult => environmentsResult?.data ?? []
)
And works fine:
const data = useSelector(selectAllEnvironments) // data is correctly defined :)
But, when I try to use createEntityAdapter
to create the selectors:
export const selectEnvironmentsResult = extendedApiSlice.endpoints.getEnvironments.select()
export const selectAllEnvironments = createSelector(
selectEnvironmentsResult,
environmentsResult => environmentsResult?.data ?? []
)
export const {
selectAll,
selectById,
selectIds,
} = environmentsAdapter.getSelectors((state) => {
const selected = selectAllEnvironments(state) ?? initialState
console.log( selected ) // prints "[]"
return selected
}
)
and use it, I get an error:
const data = useSelector(selectAll) // Uncaught TypeError: Cannot read property 'map' of undefined