如何通过react-redux-firebase将'auth'或'profile'对象传递给firestoreConnect()?

时间:2019-01-30 14:04:06

标签: reactjs firebase react-redux-firebase

我不知道如何将'profile'或'auth'道具传递给firestoreConnect()函数,以便基于用户ID或其他某些键来查询集合或文档(下面是我的代码段)。

我可以在我的jsx代码中访问'auth'和'profile'对象,但是我找不到在firestoreConnect()函数中使用它们的方法(我得到一个错误:TypeError: Cannot read property 'uid' of undefined)。如果我对某些uid进行硬编码,那么一切都可以正常工作,但是我无法将其作为props值传递。

任何建议都将受到高度赞赏!

export default compose(
  firebaseConnect(),
  firestoreConnect(props => [{ collection: 'projects', where: [['uid', '==', props.auth.uid]] }]), <<--THIS LINE DOES NOT WORK
  connect((state, props) => ({
    projects: state.firestore.ordered.projects,
    profile: state.firebase.profile,
    auth: state.firebase.auth,
  }))
)(Projects);

2 个答案:

答案 0 :(得分:3)

不确定您的代码为何不起作用(它对我有用)。您是否在firestoreConnect内尝试过控制台记录道具?像这样:

export default compose(
    firebaseConnect(),
    firestoreConnect(props => {
        console.log(props)
        return [
            { collection: 'projects', where: [['uid', '==', props.auth.uid]] }
        ]
    }), 
    connect((state, props) => ({
        projects: state.firestore.ordered.projects,
        profile: state.firebase.profile,
        auth: state.firebase.auth,
    }))
)(Projects);

也许可以使您走上正确的道路。

希望您能解决它!

答案 1 :(得分:0)

您可能已经解决了此问题,但是如果其他人遇到此问题,请在此处发布。 您需要在firestoreConnect之前移动connect方法,如下所示:

export default compose(
  firebaseConnect(),
  connect((state, props) => ({
    projects: state.firestore.ordered.projects,
    profile: state.firebase.profile,
    auth: state.firebase.auth,
  })),
  firestoreConnect(props => [{ collection: 'projects', where: [['uid', '==', props.auth.uid]] }]), <<--THIS LINE DOES NOT WORK
)(Projects);