我在我的React Native应用程序中处理react-redux
的useSelector
,我得到以下错误: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;
5条答案
按热度按时间cnh2zyt31#
我在
package.json
文件中将react-redux
版本从^5.1.1
升级到^7.1.1
。这导致了我运行时的上游依赖性错误;
npm安装
我通过在
package.json
文件中将react
版本从16.8.0
升级到16.8.3
来修复这个问题。之后,我能够安装这两个依赖项,并停止接收下面的错误;
u0njafvf2#
useSelector()钩子只接受函数作为输入,所以要解决这个问题,你必须创建一个函数来处理你的逻辑,然后在useSelector中调用它。
这是一个es6函数
然后像这样将函数传递给useSelector:
您可以将此函数(getMeals)放入当前组件中,甚至可以将其放入reducer中。
vohkndzv3#
如果你验证了react〉= 16.8.3和react-redux〉= 7.1.1,尝试下面的解决方案。我的解决方案是安装
metro
包版本0.56.0。通过npm:
npm install metro@0.56.0
通过Yarn
yarn add metro@0.56.0
0sgqnhkj4#
我的问题是从react导入useSelector ...
,但实际上是:
yrwegjxp5#
根据我的问题,它是通过清除该高速缓存的jest与以下命令解决.