如何使用本地状态创建自定义选择器

时间:2019-07-12 10:27:40

标签: reactjs redux reselect

我需要创建一个自定义选择器,该选择器接受redux状态和本地状态以产生结果。但是我不知道怎么做。

app.tsx

const initialConfig = {
  storeType: {
    [StoreType.CHAIN_STORE]: false,
    [StoreType.PROSPECT]: false,
    [StoreType.UNKNOWN]: false,
    [StoreType.PRODUCT]: false
  },
  photo: {
    binding: false
  },
  store: {
    noUnit: false,
    checkFlag: false,
    newRepo: false,
    notAssociated: false,
    deletedAssociation: false
  },
  keyword: ''
};
//it's ui state (user's custom filter)
const copy: <T extends object>(source: T) => T = source =>
  JSON.parse(JSON.stringify(source));
const [config, setConfig] = useState<Config>(copy(initialConfig));
const photos = copy(useSelector(photoWithUnitSelector).reduce(
    filterFun(config),
    []
  );
//each time render need to do a deep copy to ensure useSelector is not memorized.But it's a really perform issue.
photoWithUnitSelector = createSelector([A,B,C],(a,b,c)=>[...result])
//It is my selector that all data is from redux state.
filterFun = (config) => (prev,curr) => {
  return my_own_fun_to_get_filtered_photos(config, prev, curr)
}

我只想要useSelector(selector(config),shallowEqual) (结合redux状态和本地状态以得到我的结果) 但是我不知道如何编写选择器函数。 有人可以给我指导吗?

0 个答案:

没有答案
相关问题