5

我不知道如何将“profile”或“auth”道具传递给 firestoreConnect() 函数,以便根据用户 ID 或其他键查询集合或文档(我的代码片段如下)。

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

任何建议都非常感谢!

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);
4

2 回答 2

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);

也许这可以让你走上正确的轨道。

希望你解决!

于 2019-02-23T12:06:46.903 回答
1

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

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);
于 2019-08-04T16:52:05.927 回答