react-native-router-flux将道具传递给Tabbar组件

时间:2018-11-04 05:15:26

标签: react-native react-native-router-flux

嗨,我正在尝试使用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');
        });
};

0 个答案:

没有答案