为了账号安全,请及时绑定邮箱和手机立即绑定

React redux 如何使用 getState()

React redux 如何使用 getState()

慕村9548890 2023-03-03 13:22:53
我正在从中获取数据Firebase Real-time database并将其存储到我的 redux 状态中。我如何创建一个在初始调用后获得最新状态的操作?const getIds = (state) => state.notes.activeNotes;export const getUserNotes = (currentUserId) => (dispatch, getState) => {  getFromFirebase(`/Notes/${currentUserId}/`, (response) => {    var ids = Object.keys(response)      dispatch(setNoteIds(ids)); //should dispatch ids something like this [1,2,3,4,5]  })  const test= getIds(getState());  console.log(test); //current output []}Expected output: [1,2,3,4,5]Actual output: []
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

假设该函数getFromFirebase返回一个承诺,那么您可以将方法切换为异步,如下所示:



export const getUserNotes = (currentUserId) => async (dispatch, getState) => {

  // wait the result dispatched

  await getFromFirebase(`/Notes/${currentUserId}/`, (response) => {

    var ids = Object.keys(response)

      dispatch(setNoteIds(ids)); //should dispatch ids something like this [1,2,3,4,5]

  })

  

  const test= getIds(getState());

}


或者如果这getFromFirebase不是一个承诺,你可以用一个承诺来包装它:


export const getUserNotes = (currentUserId) => async (dispatch, getState) => {

  // wrap in a promise

  await new Promise(resolve => {

    getFromFirebase(`/Notes/${currentUserId}/`, (response) => {

      var ids = Object.keys(response)

        dispatch(setNoteIds(ids)); //should dispatch ids something like this [1,2,3,4,5]

        resolve();

    })

  })

  

  const test= getIds(getState())

}


查看完整回答
反对 回复 2023-03-03
  • 1 回答
  • 0 关注
  • 222 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号