react-native - 如何在导航抽屉上执行注销按钮以将我重定向到登录页面?
问题描述
我正在创建一个小型反应本机应用程序,当我单击菜单抽屉上的按钮注销时,它应该通过传递一个名为“signOut”的函数将我重定向到登录页面,但它向我显示此错误:“t.signout 不是一个函数并且未定义”。顺便说一句,当我在其他页面上的其他按钮上调用该功能时它可以工作。
抽屉导航器代码:
const drawerNavigator= createDrawerNavigator({
Chat: {screen: SettingsScreen},
Profile: {screen: ProfileScreen},
},
{
contentComponent:(props) => (
<View style={{flex:1}}>
<SafeAreaView forceInset={{ horizontal: 'never' }}>
<DrawerItems {...props} />
<Button title="Logout" onPress={ () => props.signOut() }/>
//even i tried: this.props.signOut()
</SafeAreaView>
</View>
),
drawerOpenRoute: 'DrawerOpen',
drawerCloseRoute: 'DrawerClose',
drawerToggleRoute: 'DrawerToggle'
}
动作signOut的代码:
export const signOut = () => {
return (dispatch, getState) => {
firebase.auth().signOut().then(() => {
dispatch({ type: 'SIGNOUT_SUCCESS' })
});
}
}
谢谢大家。
解决方案
如果signOut函数在同一个屏幕上,
signOut = () => {
return (dispatch, getState) => {
firebase.auth().signOut().then(() => {
dispatch({ type: 'SIGNOUT_SUCCESS' })
});
}
}
...
const drawerNavigator= createDrawerNavigator({
Chat: {screen: SettingsScreen},
Profile: {screen: ProfileScreen},
},
{
contentComponent:(props) => (
<View style={{flex:1}}>
<SafeAreaView forceInset={{ horizontal: 'never' }}>
<DrawerItems {...props} />
<Button title="Logout" onPress={ () => this.signOut() }/>
//even i tried: this.props.signOut()
</SafeAreaView>
</View>
),
drawerOpenRoute: 'DrawerOpen',
drawerCloseRoute: 'DrawerClose',
drawerToggleRoute: 'DrawerToggle'
}
如果它在另一个屏幕上,
export function signOut(){
return (dispatch, getState) => {
firebase.auth().signOut().then(() => {
dispatch({ type: 'SIGNOUT_SUCCESS' })
});
}
}
...
import { signOut } from 'signoutscreen'
const drawerNavigator= createDrawerNavigator({
Chat: {screen: SettingsScreen},
Profile: {screen: ProfileScreen},
},
{
contentComponent:(props) => (
<View style={{flex:1}}>
<SafeAreaView forceInset={{ horizontal: 'never' }}>
<DrawerItems {...props} />
<Button title="Logout" onPress={ () => signOut() }/>
//even i tried: this.props.signOut()
</SafeAreaView>
</View>
),
drawerOpenRoute: 'DrawerOpen',
drawerCloseRoute: 'DrawerClose',
drawerToggleRoute: 'DrawerToggle'
}
推荐阅读
- c# - SQLite; 是否有参数每次重写一条记录
- angular - CloneDeep 导致滚动条出现问题
- swift - 你能将 Swift 泛型约束限制为一组已知类型吗?
- r - 如何使用 R 中的循环函数填充表格?
- ios - 移除基于平台的 pod 依赖
- r - 将 R Leflet 地图上传到 RPubs 时出现一致的错误
- laravel - “此路由不支持 GET 方法。支持的方法:POST”消息在我的 laravel API 中
- sml - 编写一个 SML 函数,该函数采用文件名并返回不带空格的 char 列表
- javascript - 如何在我的 Jquery 代码中进行调整查看问题描述
- r - Rmarkdown 转换的严重问题