reactjs 类型错误:类型错误:(0,_reactRedux.useSelector)不是函数

dced5bon  于 2023-04-05  发布在  React
关注(0)|答案(5)|浏览(151)

我在我的React Native应用程序中处理react-reduxuseSelector,我得到以下错误:
TypeError: TypeError: (0, _reactRedux.useSelector) is not a function.
我的代码是:
import { useSelector } from 'react-redux';
const availableMeals = useSelector(state => state.meals.filteredMeals);
根据官方文档,这是useSelector最简单的用法,但我得到了这个错误。
以前,我在项目中遇到了另一个与Redux相关的错误,但它在一夜之间自动解决了,那么这个问题是否与某些缓存有关?
我该如何解决这个问题?
下面是我的代码:

import React from 'react';
import { useSelector } from 'react-redux';

import { CATEGORIES } from '../data/dummy-data';
import MealList from '../components/MealList';

function CategoryMealScreen(props) {
    const catId = props.navigation.getParam('categoryId');

    const availableMeals = useSelector(state => state.meals.filteredMeals);

    const displayedMeals = availableMeals.filter(meal => meal.categoryIds.indexOf(catId) >= 0);

    return <MealList listData={displayedMeals} navigation={props.navigation} />;
};

CategoryMealScreen.navigationOptions = navigationData => {
    //console.log(navigationData);
    const catId = navigationData.navigation.getParam('categoryId');
    const selectedCategory = CATEGORIES.find(cat => cat.id === catId);

    return {
        headerTitle: selectedCategory.name,
    };
};

export default CategoryMealScreen;
cnh2zyt3

cnh2zyt31#

我在package.json文件中将react-redux版本从^5.1.1升级到^7.1.1
这导致了我运行时的上游依赖性错误;
npm安装
我通过在package.json文件中将react版本从16.8.0升级到16.8.3来修复这个问题。
之后,我能够安装这两个依赖项,并停止接收下面的错误;

TypeError: TypeError: (0, _reactRedux.useSelector) is not a function
u0njafvf

u0njafvf2#

useSelector()钩子只接受函数作为输入,所以要解决这个问题,你必须创建一个函数来处理你的逻辑,然后在useSelector中调用它。
这是一个es6函数

const getMeals(state) => {
return state.meals.filteredMeals;
}

然后像这样将函数传递给useSelector:

const availableMeals = useSelector(getMeals(myState));

您可以将此函数(getMeals)放入当前组件中,甚至可以将其放入reducer中。

vohkndzv

vohkndzv3#

如果你验证了react〉= 16.8.3和react-redux〉= 7.1.1,尝试下面的解决方案。我的解决方案是安装metro包版本0.56.0。
通过npm:npm install metro@0.56.0
通过Yarnyarn add metro@0.56.0

0sgqnhkj

0sgqnhkj4#

我的问题是从react导入useSelector ...

import React, { useSelector } from 'react';

,但实际上是:

import React from 'react';
import { useSelector } from 'react-redux';
yrwegjxp

yrwegjxp5#

根据我的问题,它是通过清除该高速缓存的jest与以下命令解决.

npm run jest --clearCache

相关问题