redux - Redux 工具包 -selectById
问题描述
我尝试使用 reduxtoolkit 的 selectbyId 辅助方法但没有成功,任何人都可以帮我解决这个问题
类别切片
export const { selectAll:selectCatetories,selectById:selectCategoryById }=categoriesAdapter.getSelectors(state=>state.inventory.categories.categories)
类别组件
const category=useSelector((id)=>selectCategoryById(id))
我确定我的实施有问题
解决方案
要使用 Id 获取您的类别,您需要使用 reselect 创建一个自定义选择器
import { createSelector } from '@reduxjs/toolkit';
const { selectById } = categoriesAdapter.getSelectors();
export const getCategoriesState = (rootState) => rootState.categories; // I am assuming you have a 'categories' reducer in your redux store.
export const selectCategoryEntity = (id) => {
return createSelector(getCategoriesState, (state) => selectById(state, id));
}
然后,您将能够在 React 组件中使用选择器挂钩:
const category = useSelector(selectCategoryEntity(id));