首页 > 解决方案 > React Native 如何将值从函数返回给组件

问题描述

我从 firebase 数据库中获得了 2 个用户的身份验证,但是如何从函数返回一个值,或者对经过身份验证的用户有任何其他解决方案

firebase.auth().onAuthStateChanged(user => { if (user) {

            firebase.database().ref('Usersyeah/').on('child_added', function (getdata) {



                var newData = getdata.val().User

                if (user.email == getdata.val().Email ){

                    if (getdata.val().User === 'User') {
                        var routes = [
                            {title: "Home",route: "Home",}
                            {title: "Pending Request",route: "Request"}]
                    } else {
                        var routes = [
                        {title: "USER",route: "Home"}
                        ]
                    }   
                }
                 getdata.val().User })
            });

        } else {

        }
    })



    return (

        <View>
            <TouchableOpacity style={{ backgroundColor: 'green', margin: 10, padding: 10 }}
                onPress={this.mysubmit.bind(this)}>
                <Text style={{ color: '#fff', alignItems: 'flex-end' }}> SUBMIT </Text>
            </TouchableOpacity>
            <Image
                style={{ width: 250, height: 200 }}
                source={require('../myimage/durian.jpg')}

            />
            {
                routes.map(e => (
                    <TouchableOpacity style={styles.link} onPress={_ => this.navigate(e.route)}>
                        <Text style={{ fontSize: 14 }}>{e.title}</Text>
                    </TouchableOpacity>
                )
                )
            }
        </View>
    )

}

标签: javascriptreactjstypescriptreact-nativereact-router

解决方案


一种方法可能是在组件上声明一个实例变量,例如

myComponent{
    constructor(props){
        this.valToBeReturned;
    }
}

然后,在函数内部,您可以使用所需的值对其进行初始化:

theFunction(user=>{
    this.valToBeReturned = getdata.val().User //for example
})

通过这种方式,您在函数范围之外的 this.valToBeReturned 上获得了所需的值。


推荐阅读