Reactjs 如何使用钩子在react native中分派多个动作?

Reactjs 如何使用钩子在react native中分派多个动作?,reactjs,firebase,react-native,google-cloud-firestore,Reactjs,Firebase,React Native,Google Cloud Firestore,从下面的代码中,我尝试调度两个操作,从firestore数据库用户集合中获取登录用户的注册名称和姓氏,并更新我的应用程序中的名称和姓氏状态。但是,由于某些原因,只有第二个操作被调度。我的应用程序中的姓氏状态已更新,但名称状态仍为空 我曾尝试使用异步函数调用分派,但仍然没有任何结果。我试着将分派代码移动到代码的不同部分,但仍然一无所获。不管我把代码放在哪里,只调用第二个分派。到目前为止,一切似乎都不起作用。我似乎不能让两个调度只工作一个。作为补充说明,我没有使用redux,或者任何中间件都只是对u

从下面的代码中,我尝试调度两个操作,从firestore数据库用户集合中获取登录用户的注册名称和姓氏,并更新我的应用程序中的名称和姓氏状态。但是,由于某些原因,只有第二个操作被调度。我的应用程序中的姓氏状态已更新,但名称状态仍为空

我曾尝试使用异步函数调用分派,但仍然没有任何结果。我试着将分派代码移动到代码的不同部分,但仍然一无所获。不管我把代码放在哪里,只调用第二个分派。到目前为止,一切似乎都不起作用。我似乎不能让两个调度只工作一个。作为补充说明,我没有使用redux,或者任何中间件都只是对useReducer和useContext进行响应

firebase.auth().onAuthStateChanged(user => {
    if (user) {
        const userId = user.uid;
        const db = 
firebase.firestore().collection('users').doc(userId);
        db.get()
        .then(userId => {
            if (userId) {
                dispatch({
                    type: 'fill_name',
                    payload: userId.data().Name
                })
                dispatch({
                    type: 'fill_surname',
                    payload: userId.data().Surname
                })
            } else {
                return null;
            }
        })
    } else {
        navigate('Intro');
    }
});

您不能从一个操作中分派两次的原因是第一次创建{dispatch}逻辑的主要原因。因为有一个地方,里面有所有的“应用真理”,有一种改变律法的方法,有一座山可以得到一个

你能做的就是像这样发送名字和姓氏-


firebase.auth().onAuthStateChanged(user => {
    if (user) {
        const userId = user.uid;
        const db = 
firebase.firestore().collection('users').doc(userId);
        db.get()
         .then(userId => {
            if (userId) {
                dispatch({
                    type: 'fill_name',
                    firstName: userId.data().Name
                    surName: userId.data().Surname
                })
            } else {
                return null;
            }
        })
    } else {
        navigate('Intro');
    }
});

当在减速器中听到这个动作时-

   action.firstName
直呼其名