问题描述
我试图像这样从屏幕A向屏幕B发送参数:
这是我到目前为止正在尝试的:
await Auth.signIn(email,password)
.then((user) => {
navigation.navigate('SingInConfirm',{user: user});
})
在屏幕B上,我想接收这样的用户参数。
const SingInConfirmation = ({ route,signIn: signInCb }) => {
const { user } = route.params;
但是我收到此错误:TypeError: undefined is not an object (evaluating 'route.params')
这是我的StackNavigator
const AuthStack = createStackNavigator();
const AuthModalStack = createStackNavigator();
const AuthNavigator = ({ signIn }) => (
<AuthModalStack.Navigator mode="modal" headerMode="none">
<AuthModalStack.Screen name="AuthPages">
{() => (
<AuthStack.Navigator>
<AuthStack.Screen name="SignIn" component={SignInScreen} />
</AuthStack.Navigator>
)}
</AuthModalStack.Screen>
<AuthModalStack.Screen name="SingInConfirm">
{({ navigation }) => <SingInConformation signIn={signIn} navigation={navigation} />}
</AuthModalStack.Screen>
</AuthModalStack.Navigator>
);
export default AuthNavigator;
为什么我无法在屏幕B上接收参数?
解决方法
SingInConformation
组件在这一行中没有收到route
作为道具,您需要提供它,并从:更改此行:
{({ navigation }) => <SingInConformation signIn={signIn} navigation={navigation} />}
对此:
{({ route,navigation }) => <SingInConformation signIn={signIn} navigation={navigation} route={route} />}