嗨,我正在尝试使用react-native-router-flux将数据传递到Tabbar Scene。 所以我有三个场景 1:登录 2:注册 3:仪表板
注册用户后,我会将用户从注册场景移动到仪表板场景。我正在使用Firebase,所以一旦创建用户,我就会得到一个uid。我想将该uid作为道具传递给Tabbar视图。
我面临的问题是,如果我从场景中删除标签栏,并在Actions.DASHBOARD({ uid: uid })
工作时传递数据。
但是它不能与标签栏一起使用。 https://github.com/aksonov/react-native-router-flux/issues/1230 在github上看到了这个错误。
也对stakoverflow和github进行了一些研究,发现我必须使用同样无法正常工作的Actions.jump("SCENE_NAME", {uid: uid})
。
如果有人遇到过此类问题,并且找到了解决方案,请提供帮助。
在我的App.js中,我声明了所有这样的场景。如果我有任何错误,请告诉我。
class App extends Component {
render() {
return (
<Router>
<Scene key="ROOT" style={styles.container}>
<Scene
key="tabbar"
tabs={true}
tabBarStyle={{ backgroundColor: '#FFFFFF' }}
navTransparent
>
<Scene key="LOGIN" component={Login} title="Login Screen" />
<Scene
key="REGISTER"
component={Register}
title="Register Screen"
initial={true}
/>
<Scene key="DASHBOARD" component={Dashboard} title="Dashboard Screen" />
</Scene>
</Scene>
</Router>
);
}
}
在Register.js内部,我有一个函数,可以单击一次。
// register.js
onRegisterClick = () => {
const { email, fname, lname } = this.state;
app.auth()
.createUserWithEmailAndPassword(email, 'qwertyuiop')
.then(data => {
const userId = data.user._user.uid;
return userId;
})
.then(userId => {
app.database()
.ref('Users')
.child(userId)
.set({
email,
fname,
lname
});
return userId;
})
.then(userId => {
Actions.jump('DASHBOARD', { uid: userId });
})
.catch(err => {
console.log('Cannot create user');
});
};