2017-05-05 14 views
1

我有以下代碼工作正常。在我的渲染方法中,我可以使用this.props.ticket._id並獲取票證的ID。但是在渲染方法之外,this.props.ticket._id變得未定義,那麼我能做些什麼來在我的mongo集合底部傳遞這個道具作爲查詢。如何使用傳遞給孩子的使用「this.props ...」的反應道具作爲mongo集合.findOne()查詢?

import React from 'react'; 
import { createContainer } from 'meteor/react-meteor-data'; 

import { UserReservations } from '../../../imports/collections/userRes'; 

class PurchaseView extends React.Component { 

    renderReservationInfo() { 
    console.log(this.props.UserReservation); 

    render() { 
    console.log(this.props.ticket._id); 
    console.log(currentTicketId); 
    return(
     <div> 
      <div> 

      {this.renderReservationInfo()} 

      </div> 
     </div> 
    ) 
    } 
} 

好了,到這裏的UserReservations.findOne內(ticketId:this.props.ticket._id)... this.props.ticket._id不工作。關於我能做些什麼來獲得prop值以便將其用作查詢的建議?

export default createContainer(() => { 
    Meteor.subscribe('userReservations'); 

    return { UserReservation: UserReservations.findOne({ ticketId: this.props.ticket._id }).fetch() }; 

    }, PurchaseView); 

回答

0

創建容器是圍繞您的組件的包裝。所以你應該接受createContainer中的道具,然後將這些道具傳遞給組件。 你也應該過濾出版物中的數據,否則如果你喜歡你的代碼,你會發布所有的數據到客戶端。

像這樣的東西應該可以工作,但您需要修改您的出版物才能接受該ID。

export default createContainer(({ ticket }) => { 
    Meteor.subscribe('userReservations', ticket._id); 

    return { UserReservation: UserReservations.findOne().fetch() }; 

}, PurchaseView); 
相關問題