我不知道如何将'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);
答案 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);