TypeError: TypeError: (0, _reactRedux.useSelector) 不是函数

Che*_* S. 5 reactjs react-native react-redux

我工作useSelectorreact-redux在我的阵营原生应用程序,我收到以下错误:

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;
Run Code Online (Sandbox Code Playgroud)

Ble*_*ing 1

useSelector() 挂钩仅接受函数作为输入,因此要解决您的问题,您必须创建一个函数来处理您的逻辑,然后在 useSelector 中调用它。这是一个例子:

这是一个 es6 函数

    const getMeals(state) => {
return state.meals.filteredMeals;
}
Run Code Online (Sandbox Code Playgroud)

然后将你的函数传递给 useSelector ,如下所示:

const availableMeals = useSelector(getMeals(myState));
Run Code Online (Sandbox Code Playgroud)

你可以把这个函数(getMeals)放在你当前的组件中,甚至放在你的reducer中。