我正在使用React Native开发一个电子商务应用程序,我尝试在抽屉内容中使用useState,它告诉我这一点
错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用。发生这种情况可能是由于以下原因之一:
- 您的 React 和渲染器版本可能不匹配(例如 React DOM)
- 你可能违反了 Hooks 规则
- 您可能在同一个应用程序中拥有多个 React 副本
预先感谢您的回答。
这是代码
import React, { useState } from 'react'
import { View, Text, TouchableOpacity, FlatList, StyleSheet, StatusBar } from 'react-native'
import IonIcons from "react-native-vector-icons/Ionicons"
import { categories } from '../../../services/DataTest'
import DrawerSearch from './DrawerSearch'
import DrawerItem from './DrawerItem'
export default function DrawerContent (props) {
const [search, setSearch] = useState("");
return (
<View>
<TouchableOpacity
style={styles.customDrawerTouch}
>
<View style={styles.backButtonRow}>
<IonIcons
name="ios-arrow-back"
size={25}
style={styles.customDrawerIcon}
color="#666666" …Run Code Online (Sandbox Code Playgroud) 我在另一个项目中遇到了问题,它指向我正在使用的反应导航抽屉,所以我决定打开一个测试文件来尝试重现问题
我从反应导航网站复制了代码并运行它,它给了我这个错误
ERROR TypeError: undefined is not an object (evaluating 'InnerNativeModule.installCoreFunctions')
ERROR Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication). A frequent cause of the error is that the application entry file path is incorrect.
This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native.
ERROR Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication). A frequent cause of the error is …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 React Navigation 6.x 包含到带有 Redux 的 React Native 项目中,因此需要能够从外部组件访问导航器。
我正在遵循本指南(不使用导航道具进行导航),并且具有与示例中基本相同的代码,其功能正常:
import { createNavigationContainerRef } from '@react-navigation/native';
export const navigationRef = createNavigationContainerRef()
export function navigate(name, params) {
if (navigationRef.isReady()) {
navigationRef.navigate(name, params);
}
}
Run Code Online (Sandbox Code Playgroud)
不过我也在使用 Typescript。
React Navigation 还有一个关于集成 Typescript 的指南(使用 TypeScript 进行类型检查),它展示了如何输入导航引用本身,这也很好用:
export const navigationRef = createNavigationContainerRef<RootStackParamList>();
Run Code Online (Sandbox Code Playgroud)
不过,没有输入该navigate函数的示例,而且我无法让任何东西发挥作用。
我认为解决方案是复制navigationRef.navigate()方法的类型(此处定义)并将其简单地应用于包装函数:
// navigationRef.navigate() typing...
//
// navigate<RouteName extends keyof ParamList>(
// ...args: undefined extends ParamList[RouteName]
// ? [screen: RouteName] | [screen: …Run Code Online (Sandbox Code Playgroud) typescript react-native react-navigation react-navigation-v6
我正在尝试解决 React Native 导航的错误Non-serializable values were found in the navigation state. Alert > params.action[0].onPress (Function)。我不认为该函数没有像错误指出的那样传递给参数,但每次我按下图标时它都会返回相同的错误。如果有任何建议或意见,我将不胜感激。
export default function Alert({ route, navigation }) {
const { colors } = useTheme();
const { t } = useTranslation();
const { title, message, action, option, type } = route?.params;
const success = type === "success";
useEffect(() => {
const backHandler = BackHandler.addEventListener(
"hardwareBackPress",
() => !option?.cancelable
);
return () => backHandler.remove();
}, [option?.cancelable]);
const renderButtonFirst = () => {
const firstTitle = …Run Code Online (Sandbox Code Playgroud) javascript react-native react-native-navigation react-navigation
react-native 0.66.4我在和中面临导航问题react-navigation 4.4.4。我有一个如下所示的选项卡导航设置。
家
贸易
屏幕 1 通向 2 或 3
我正在尝试使用单独的按钮从“主页”选项卡(屏幕 A)导航到“交易”选项卡(屏幕 2 和屏幕 3),我可以通过执行以下操作来实现这一点navigation.navigate('Trade', { screen: 'Screen2', params:{...} }):navigation.navigate('Trade', { screen: 'Screen3', params:{...} })
我现在面临的问题是
当我导航到“交易”(屏幕 2)并使用后退按钮时,它会导航到“主页”(屏幕 A)
导航到 Trade (Screen3),然后使用后退按钮,这样Trade(Screen3) => Trade(Screen 2) => Home(ScreenA),就像这样Trade(Screen2) => Trade(Screen 3) => Home (ScreenA)如果我首先访问了 Screen 3,并且要实现此目的,我必须单击返回两次。
最后,如果我在单击“交易”选项卡之前访问过屏幕 2 或 3,它会显示该屏幕而不是屏幕 1(初始)。这不是我想要的行为。
我该如何做到这一点,以便每当我从交易(屏幕 2 或屏幕 3)返回时,它都会导航到交易(屏幕 1),并且在访问这些屏幕(屏幕 2 和屏幕 3)后单击交易选项卡也会导航到屏幕1(初始)?
我怎样才能
Expo 版本:45 使用堆栈导航和 Native Base。我正在使用道具,但收到此警告。为什么我会收到此警告?
我在使用 React Navigation Material Bottom Tabs Navigator 时遇到一些样式问题。有一个背景,它会自动应用于活动选项卡,但我无法对其进行样式设置(我在下图中突出显示了它)。
有人可以帮忙吗?我的代码如下:
<Tab.Navigator
initialRouteName="Home"
labeled={false}
shifting={false}
activeColor="#333"
inactiveColor="#999999"
inactiveBackgroundColor='#000'
barStyle={{
paddingHorizontal: 10,
backgroundColor: '#ffffff',
}}
>
<Tab.Screen
name='Home'
component={HomeScreen}
options={{
tabBarLabel: 'Home',
tabBarIcon: ({ color }) => (
<MaterialCommunityIcons name="home" color={color} size={26} />
),
}}
/>
</Tab.Navigator>
Run Code Online (Sandbox Code Playgroud)
我已经阅读了所有 React Navigation 文档,但没有提及。
我有一个像这样的React Navigation Tab组件:
const RootNavigator=TabNavigator({
Home:{
screen: Home
,navigationOptions:{
tabBarIcon: ({focused}) => (
<Icon
name={focused?'ios-home':'ios-home-outline'}
style={{color:'#464646'}}
size={16}
/>
)
}
},
Notifications:{
screen: Notifications
,navigationOptions:{
tabBarIcon: ({focused}) => (
<TabNotifications focused={focused} />
)
}
},{});
Run Code Online (Sandbox Code Playgroud)
有没有办法在离开屏幕时进行回调?
在这种情况下,我想在离开通知选项卡时执行一项功能.例如将通知标记为已显示并删除徽章指示符.
截至目前,我正在从其他组件中提取通知图标以显示数字徽章.
提前致谢.
在使用React Navigation的React Native应用程序中,我有一个屏幕组件,我想根据给定的参数定义title使用navigationOptions属性,如下所示:
static navigationOptions = ({navigation}) => ({
title: navigation.state.params.myParam
});
Run Code Online (Sandbox Code Playgroud)
它工作正常,标题打印正确.
但是,现在我将应用程序迁移到Typescript,我想定义myParam为必需的字符串,我不知道如何定义参数,所以我在IDE中获得自动完成:
({navigation}: /* WhatDoIPutHere? */)
Run Code Online (Sandbox Code Playgroud)
我在这个Gist中试过这个方法,但是当我在那里评论时,那对我来说效果不好......
我可以使用哪种正确的类型来定义那里的预期参数?
我需要知道如何隐藏底部标签。
我尝试了以下方法:
tabBarShowLabels:“隐藏”,tabbarlabelvisible:假。
我也删除了tabbarlabel: 'Home',它仍然显示
任何帮助将不胜感激,或者如果有人可以指出我正确的方向。
import {createBottomTabNavigator} from 'react-navigation'
import Icon from 'react-native-vector-icons/Ionicons'
const Tabs = createBottomTabNavigator ({
Home:{
screen: Home,
navigationOptions:{
tabBarIcon: ({ focused, tintcolor }) => (
<Icon name="ios-home" size={24} />
)
}
},
Inbox:{screen: Inbox,
navigationOptions:{
tabBarIcon: ({ tintcolor }) => (
<Icon name="ios-mail" size={24} />
)
}
},
Search:{screen: Search,
navigationOptions:{
tabBarIcon: ({ tintcolor }) => (
<Icon name="ios-search" size={24} />
)
}
},
Favorites:{screen: Favorites,
navigationOptions:{
tabBarIcon: ({ tintcolor }) => ( …Run Code Online (Sandbox Code Playgroud) react-native ×10
react-navigation ×10
reactjs ×5
javascript ×3
typescript ×2
expo ×1
material-ui ×1
native-base ×1
navigation ×1
node.js ×1
react-hooks ×1