0

这是我的 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]);
4

1 回答 1

0

你忘了问这个问题,但你的代码看起来很好。在组件中,您可以使用 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 />
}

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

于 2021-05-13T19:37:07.293 回答