React Native使用Reselect的createSelector报输入选择器为undefined如何解决
问题原因
报错提示你传入createSelector的输入选择器不是函数,是undefined,本质是你代码里的createCollection变量在传入createSelector时的值为undefined,常见触发场景如下:
- 变量定义在块级作用域内,
createSelector调用的作用域访问不到该变量 - 项目存在循环导入,模块加载阶段
createCollection还未完成初始化就被引用 - 变量名拼写错误,或存在同名变量/导入覆盖了你的定义
解决方案
- 检查
createCollection的定义位置,确保它和createSelector调用在同一作用域,且定义在调用之前,没有被其他同名变量/导入覆盖 - 排查循环依赖:如果当前selector文件和其他文件存在双向导入(比如当前文件导入了store配置文件,store配置文件又导入了当前文件的selector),把公共逻辑抽离到单独的文件解除循环依赖即可
- 你可以直接把输入选择器内联到
createSelector参数中临时验证,代码如下:
import { createSelector } from 'reselect'; export const getCollectionName = createSelector( state => state.createCollection, (el) => el );
如果内联写法没有报错,就可以确定是之前的createCollection变量引用异常,按照前两步排查即可。
内容的提问来源于stack exchange,提问作者locklock123
相关产品推荐
相关产品推荐

