我有一个类Login,它有一个函数:
async _logInWithFacebook() {
await Facebook.initializeAsync(fbConfig.APP_ID);
const { type, token } = await Facebook.logInWithReadPermissionsAsync(
fbConfig.APP_ID,
{
permissions: ["public-profile", "email"],
}
);
if (type === "success") {
this.props.login(token, "facebook");
this.props.navigation.navigate("Home");
} else {
throw new Error("Something wrong with facebook auth");
}
}
当我按下按钮登录时,我称之为。我还有一个类HomeScreen,按下按钮后我想移动到那里。
class HomeScreen extends Component {
componentDidMount() {
this.props.fetchMyMeetups();
}
render() {
const {
myMeetups: { isFetched, data, error },
} = this.props;
return (
<View style={styles.root}>
<View style={styles.header}>
<View style={styles.add}>
<CreateMeetupScreen />
</View>
</View>
<View style={styles.topContainer}>
<Text>HomeScreen</Text>
</View>
<View style={styles.bottomContainer}>
<MyMeetupsList meetups={data} />
</View>
</View>
);
}
}
export default HomeScreen;
我的导航器:
export function Navigator() {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Login">
<Stack.Screen name="Login" component={LoginScreen} />
<Stack.Screen name="Home" component={HomeScreen} />
</Stack.Navigator>
</NavigationContainer>
);
因此,当我按下按钮时,我会得到一个错误:[未处理的承诺拒绝:TypeError:undefined不是对象(正在评估"_ref.navigation"(]
一开始,控制台将您的道具记录在每个组件中,并检查您是否在其上进行导航,然后不要忘记将您想要传递的道具传递到下一个屏幕,作为导航功能的第二项,如
this.props.navigation.navigate("Home",{SOME PROPS HERE});
然后你就可以在下一页中得到它并使用它。我希望它能帮助<3