useNavigation()导航跳转失效问题排查(已解决类型错误)
使用@react-navigation/native的useNavigation()进行页面导航时,曾遇到以下TypeScript类型错误:
No overload matches this call. Overload 1 of 2, '(...args: never): void', gave the following error. Argument of type 'string' is not assignable to parameter of type 'never'. Overload 2 of 2, '(options: never): void', gave the following error. Argument of type 'string' is not assignable to parameter of type 'never'.ts(2769)
目前已解决上述类型错误,但点击按钮后仍无法跳转到Home组件。相关代码如下:
SchedulingComplete组件代码
import React from 'react'; import { StatusBar, useWindowDimensions } from 'react-native'; import LogoSvg from '../../assets/logo_background_gray.svg'; import DoneSvg from '../../assets/done.svg'; import { Container, Content, Footer, Mensage, Title } from './styles'; import { ConfirmButton } from '../../components/ConfirmButton'; import { useNavigation } from '@react-navigation/native'; export function SchedulingComplete() { const { width } = useWindowDimensions(); const navigation = useNavigation(); function handleConfirm() { navigation.navigate('Home'); } return ( <Container> <StatusBar barStyle="light-content" translucent backgroundColor="transparent" /> <LogoSvg width={width} /> <Content> <DoneSvg width={80} height={80} /> <Title>Carro Alugado</Title> <Mensage> Agora é só voce ir até{'\n'}a concessionária{'\n'}começar a dirigir </Mensage> </Content> <Footer> <ConfirmButton title="OK" onPress={handleConfirm} /> </Footer> </Container> ); }
路由配置代码
import React from 'react'; import { createNativeStackNavigator } from '@react-navigation/native-stack'; import { Home } from '../screens/Home'; import { Scheduling } from '../screens/Scheduling'; import { SchedulingComplete } from '../screens/SchedulingComplete'; import { SchedulingDetails } from '../screens/SchedulingDetails'; import { CarDetails } from '../screens/CarDetails'; const { Navigator, Screen } = createNativeStackNavigator(); export function StackRoutes() { return ( <Navigator screenOptions={{ headerShown: false }} initialRouteName="Home"> <Screen name="Home" component={Home} /> <Screen name="CarDetails" component={CarDetails} /> <Screen name="Scheduling" component={Scheduling} /> <Screen name="SchedulingDetails" component={SchedulingDetails} /> <Screen name="SchedulingComplete" component={SchedulingComplete} /> </Navigator> ); }
内容的提问来源于stack exchange,提问作者Weslley Henrique
相关产品推荐
相关产品推荐

