Javascript 如何在TypeScript中使用navigation.replace?

Javascript 如何在TypeScript中使用navigation.replace?,javascript,reactjs,typescript,react-native,react-navigation,Javascript,Reactjs,Typescript,React Native,React Navigation,我试图在我的代码中使用此选项: const navigation = useNavigation(); navigation.replace('AllFriends') 但我一直得到一个错误: Property 'replace' does not exist on type 'NavigationProp<Record<string, object | undefined>, string, NavigationState, {}, {}>'. 类型“Navigat

我试图在我的代码中使用此选项:

const navigation = useNavigation();
navigation.replace('AllFriends')
但我一直得到一个错误:

Property 'replace' does not exist on type 'NavigationProp<Record<string, object | undefined>, string, NavigationState, {}, {}>'.
类型“NavigationProp”上不存在属性“replace”。
我也试过用这个

const navigation =  useNavigation<StackNavigationProp<{route: {} }>>()
navigation.replace('route');
const-navigation=useNavigation()
导航。替换(“路线”);
正如这里所建议的:

但这给了我一个关于替换的错误,应该有2个参数,但是只有1个

我正在使用“@react navigation/native”:“^5.5.1”,

const navigation=useNavigation()
导航。替换(“路线”);

替换方法仅适用于StackNavigators中的屏幕。我们需要一种方法来显式地键入屏幕是这样的

当您实例化StackNavigator时,您可以传入一个类型,该类型使用路由预期接收的参数定义路由:

export type StackParams = {
   MyRoute: undefined;
   AnotherRoute: {
      id: number
   }
}

createStackNavigator<StackParams>();
执行此操作将确认这是一个堆栈屏幕,并提供可导航到的路由列表:

replace('AnotherRoute') //success!
replace('FakeRoute') //error, this was not defined in our RouteParams
import { StackNavigationProp } from '@react-navigation/stack/';
import { StackParams} form 'your/routes';

const navigation =  useNavigation<StackNavigationProp<StackParams>>()
navigation.replace('route');
replace('AnotherRoute') //success!
replace('FakeRoute') //error, this was not defined in our RouteParams