redux :通过动态键选择/获取嵌套状态

问题描述

这里是我的 redux 状态,状态具有动态嵌套对象名称

    const search = {
     client :
    { result: [],selected: null,isLoading: false,isSuccess: false,},[dynamicKey] :
    { result: [],[dynamicKey2] :
    { result: [],}

    };

我正在尝试通过动态键获取嵌套对象,这是我的选择器代码

import { createSelector } from "reselect";

export const searchState = (state) => state.search;

export const selectSearch = (keyRef) =>
  createSelector([searchState],(search) => search[keyRef]);

解决方法

您忘了问这个问题,但您的代码看起来不错。在组件中,您可以使用 useMemo 来不必要地创建选择器:

//renamed the selector to create...
export const createSelectSearch = (keyRef) =>
  createSelector([searchState],(search) => search[keyRef]);

//compnent example
const MyComponent = ({keyRef}) => {
  const selectSearch = React.useMemo(
    ()=>createSelector(keyRef),//create the selector when keyRef changes
    [keyRef]
  );
  const result = useSelector(selectSearch)
  return <jsx />
}

可以找到有关此模式的更多信息here