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

redux:通过动态键选择/获取嵌套状态,redux,react-redux,reselect,Redux,React Redux,Reselect,这里是我的redux状态,该状态具有动态嵌套对象名称 const search = { client : { result: [], selected: null, isLoading: false, isSuccess: false,}, [dynamicKey] : { result: [], selected: null, isLoading: false, isSuccess: f

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

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

    };
我试图通过动态键获取嵌套对象,以下是我的选择器代码:

import { createSelector } from "reselect";

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

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

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

//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 />
}
//重命名选择器以创建。。。
导出常量createSelectSearch=(keyRef)=>
createSelector([searchState],(search)=>search[keyRef]);
//组件示例
常量MyComponent=({keyRef})=>{
const selectSearch=React.usemo(
()=>createSelector(keyRef),//在keyRef更改时创建选择器
[keyRef]
);
常量结果=使用选择器(选择搜索)
返回
}
可以找到有关此模式的更多信息