首页 > 解决方案 > 如何在 redux 钩子中使用 useDispatch 调度异步函数

问题描述

我正在尝试从 firebase 数据库中获取所有用户,然后将它们设置为状态,但我allUsers在减速器/状态中变得空了。如何解决这个问题?

export const get_all_users = () => {
  var allUsers = [];
  database()
    .ref('/')
    .child('Users')
    .on('child_added', (data) => {
      // console.log('det all user', data.val());
      allUsers.push(data.val());
      // console.log('all user', allUsers);
    });
{* ----- getting empty allusers array here -----*}
  return {
    type: 'set_all_users',
    payload: {data: allUsers},
  };
};

return我得到allUsers变量的空值之前。

标签: firebasereact-nativefirebase-realtime-databasereduxreact-redux

解决方案


试试这个代码。从那里您可以将所有用户获取到一个名为 allUsers 的数组,然后您可以分派它。

export const get_all_users = () => {
    firebase.database()
        .ref('/')
        .child('Users')
        .on('child_added', (snapshot) => {
             const allUsers = [];
             snapshot.forEach((child) => {
                 allUsers.push(child.val());
             });
        });
};

推荐阅读