首页 > 解决方案 > 在 Redux 的 'compose' 上使用 React.js 道具

问题描述

我正在使用 react-redux-firebase 和 firestoreConnect 从我的数据库中获取信息,并通过他们的预制减速器将其映射到道具中。要将其信息连接到我的组件,我以下列方式使用“撰写”方法:

export default compose(
   connect(mapStateToProps, mapDispatchToProps),
   firestoreConnect([
      {
         collection: 'questions',
         doc: this.props.match.params.id,
         subcollection: 'messages',
      }
   ])
)(QuestionDetail);

如您所见,我正在尝试访问具有 ID 的特定文档,该 ID 作为来自其父级的道具传递给组件。但是,“this”在“compose”的上下文中是未定义的,因此我不能使用它来访问道具和我的参数。

有没有其他方法可以访问传递给组件的 id,以便我可以向 Firestore 请求它?

标签: reactjsfirebasereduxgoogle-cloud-firestore

解决方案


在对文档进行更深入的搜索后,我发现您可以将道具传递给 firestoreConnect 函数(另请注意,我以错误的方式查询子集合)。代码最终是:

export default compose(
   connect(mapStateToProps, mapDispatchToProps),
   firestoreConnect((props) => [
      {
         collection: 'questions',
         doc: props.match.params.id,
         subcollections: [{ collection: 'messages' }],
      }
   ])
)(QuestionDetail);

推荐阅读