不可变和重新选择的正确模式是什么?

时间:2019-10-15 08:19:30

标签: reactjs react-redux immutable.js reselect

假设我有以下代码,并且假设state来自Redux,并且由于某种原因state尚不是Immutable.js对象。问题只是层出不穷,变得如此冗长。

export const helloWorldSelector = createSelector(
  initialState,
  state => state.get('greetings') // yields .get is an undefined function 
);

export const japaneseGreetSelector = createSelector(
  helloWorldSelector,
  state => state.get('ja')
);

export const englishGreetSelector = createSelector(
  helloWorldSelector,
  state => state.get('en')
);

我可以像这样进行回退,但这仍然会给依赖于此选择器的后续选择器带来问题。

export const helloWorldSelector = createSelector(
  initialState,
  state => state && state.get('greetings')
);

现在,如果我有更长的链,那么我将必须执行以下操作:

export const helloWorldSelector = createSelector(
  initialState,
  state => state && state.get('greetings', new Map())
);

这是如此潮湿和乏味,以至于我开始怀疑这种模式。我一定做错了什么,将Immutable.js与Reselect一起使用的正确方法/最佳实践是什么?

0 个答案:

没有答案