【问题标题】:How to resolve uncaught error createSelector method?如何解决未捕获的错误 createSelector 方法?
【发布时间】:2020-03-09 23:51:33
【问题描述】:

我在我的 Angular 应用程序中使用了一个选择器,但在调用该选择器时遇到了一个未捕获的错误。尽管我已将所需的选择器函数作为参数提供给createSelector。根据此处的重新选择文档 - https://github.com/reduxjs/reselect

Uncaught Error: Selector creators expect all input-selectors to be functions, 
instead received the following types: [object]

我确实在这里发现了一个类似的问题,这表明将选择器从箭头函数更改为普通函数声明可以解决它。为了解决函数声明的任何提升问题,但这并不能解决未捕获的错误 - https://github.com/reduxjs/reselect/issues/169

选择器通过传入store.getState()作为参数来调用:

let state = getBookTitles(this.store.getState());

问题:

在调用重新选择的createSelector 时如何解决未捕获的错误?

这是我的 Selectors.js 文件,其中包含应用状态选择器:

// Selectors.js

import { createSelector } from 'reselect';

function selectBooks(state: any) {
  return state ? state.books: [];
}
function selectBookTitles(books: any) {
  return books ? books.titles: [];
}

// bookTitle selector
export let getBookTitles = createSelector(
  selectBooks,
  selectBookTitles,
);

【问题讨论】:

    标签: javascript redux store reselect


    【解决方案1】:

    原来错误来自selector.js 文件中错误定义的选择器。

    错误:

    Uncaught Error: Selector creators expect all input-selectors to be functions, 
    instead received the following types: [object]
    

    语法错误:

    export const selectConfig = createSelector(
      [initialSettingsState.config],
      'config',
    );
    

    正确的语法:

    const configSelector = state => {
      return state ? state.config: [];
    };
    
    export const getConfig = createSelector(
      configSelector,
      config=> {
        return config;
      },
    );
    

    【讨论】:

      猜你喜欢
      • 2013-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多