“重新选择”选择器的console.log(..)显示f()

时间:2018-08-22 22:10:46

标签: reselect react-boilerplate

我正在使用react-boilerplate,它使用reselect来读取redux状态并将其映射到props。我正在尝试在react组件外部读取redux状态(例如在myUtil.js中定义的自定义函数中)。

selectors.js中有选择器:

const makeSelectLoading = () =>   createSelector(selectGlobal, globalState => globalState.get('loading'));

我将makeSelectLoading导入myUtil.js,并尝试使用console.log(makeSelectLoading())打印该值。我期望使用Loading状态变量的值,而不是得到以下内容:

myUtil.js?d403:14 ƒ () {
    if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {
      // apply arguments instead of spreading for performance.
      lastResult = func.apply(null, arguments);
    } 

我希望这行得通吗?如果没有,我在哪里出错了?谢谢!

1 个答案:

答案 0 :(得分:0)

makeSelectLoading本身不是选择器,而是selector factory:返回实际选择器的函数。

要使用它,您应该从中获取选择器实例,然后使用期望的参数调用返回的实例

const getSelectLoading = makeSelectLoading();
const loadingState = getSelectLoading(state);