我正在使用 Firebase 开发 React 应用程序。我想在dispatch完成后调用第一个函数。每个用户都分配了一个currentcity,但我不希望currentcity被删除,因为这会破坏应用程序。所以我想要做的是在调用 deleteCity 函数之后运行 changeCurrentCity 函数,这样就不会发生这种情况。我只是想将 currentcity 分配给列表中的第一个。changeCurrentCity()不从内运行.then()的deleteCity。我试过 console.log-ing 它,它只显示功能本身。我确定这只是一个简单的修复,但我不知道我在做什么。const changeCurrentCity = (city) => {    return (dispatch, getState, { getFirebase, getFirestore }) => {        const firestore = getFirestore();        const userId = getState().firebase.auth.uid;        firestore.collection('users').doc(userId).update({            currentcity: city        }).then(() => {            dispatch({ type: 'UPDATE_CITY', city });        }).catch((err) => {            dispatch({ type: 'UPDATE_CITY_ERROR', err});        })    }};const deleteCity = (city) => {    return (dispatch, getState, { getFirebase, getFirestore }) => {        const firestore = getFirestore();        firestore.collection('cities').doc(city.id).delete().then(() => {            dispatch({ type: 'DELETE_CITY', city });        }).then(() => {            changeCurrentCity(getState().firestore.data.cities[Object.keys(getState().firestore.data.cities)[0]].userid);        }).catch((err) => {            dispatch({ type: 'DELETE_CITY_ERROR', err});        })    }};export {changeCurrentCity, deleteCity}问题出在deleteCity. changeCurrentCity删除城市后未运行。
                    
                    
                1 回答
                            翻阅古今
                            
                                
                            
                        
                        
                                                
                    TA贡献1780条经验 获得超5个赞
分派动作是异步的,这就是为什么可能在分派后立即调用 changeCity 而不更新商店的原因。您可以使用 asnyc 等待调度并在此之后解决承诺。这将延迟 changeCity 直到删除完成。
添加回答
举报
0/150
	提交
		取消
	