首页 > 解决方案 > Redux 工具包 -selectById

问题描述

我尝试使用 reduxtoolkit 的 selectbyId 辅助方法但没有成功,任何人都可以帮我解决这个问题

  1. 类别切片

    export const {
     selectAll:selectCatetories,selectById:selectCategoryById
     }=categoriesAdapter.getSelectors(state=>state.inventory.categories.categories)
    
  2. 类别组件

    const category=useSelector((id)=>selectCategoryById(id))
    

我确定我的实施有问题

标签: reduxredux-toolkit

解决方案


要使用 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));

推荐阅读