Estoy tratando de usar createEntityAdapter de reduxjs/toolkit para generar selectores automáticamente.
Creé un selector "seleccionar todo" con éxito usando create selector :
export const selectEnvironmentsResult = extendedApiSlice.endpoints.getEnvironments.select() export const selectAllEnvironments = createSelector( selectEnvironmentsResult, environmentsResult => environmentsResult?.data ?? [] )Y funciona bien:
const data = useSelector(selectAllEnvironments) // data is correctly defined :) Pero, cuando trato de usar createEntityAdapter para crear los selectores:
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 } )y lo uso, me sale un error:
const data = useSelector(selectAll) // Uncaught TypeError: Cannot read property 'map' of undefinedEl error estaba en el valor transformReponse . Debe usar la función adapter.setAll :
transformResponse: (responseData) => { return adapter.setAll(adapter.getInitialState(), responseData) },