我正在使用 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 回答
![?](http://img1.sycdn.imooc.com/545868b60001587202200220-100-100.jpg)
翻阅古今
TA贡献1780条经验 获得超5个赞
分派动作是异步的,这就是为什么可能在分派后立即调用 changeCity 而不更新商店的原因。您可以使用 asnyc 等待调度并在此之后解决承诺。这将延迟 changeCity 直到删除完成。
添加回答
举报
0/150
提交
取消