2017-09-20 4 views
0

私は黒木ページネーションを実装しています。 グローバル変数を使用し、特定のフィールドを持つドキュメントを照会する必要があります。 変数をcreateContainerからグローバルに送信するにはどうすればよいですか?React/MeteorでcreateContainerからグローバルに値を送信する方法は?

(注:私はconstの改ページにcreateContainerからイベントIDを送信したい)

(にconsole.log(イベントID)から; - >この番組 "未定義")

私のコードは以下の通りです:

import React, { Component } from 'react'; 
import PropTypes from 'prop-types'; 
import createReactClass from 'create-react-class'; 
import { Link } from 'react-router-dom'; 
import { Table, Alert, Button, FormGroup, FormControl, Row } from 'react-bootstrap'; 
import { Meteor } from 'meteor/meteor'; 
import { createContainer } from 'meteor/react-meteor-data'; 
import { Events } from '../../api/events'; 
import { Registers } from '../../api/registers'; 
import { TotalAmount } from '../../api/registers'; 
import BootstrapPaginator from 'react-bootstrap-pagination'; 
import NumberFormat from 'react-number-format'; 
import Loading from '../../components/Loading'; 


const pagination = new Meteor.Pagination(Registers, { 
    filters: {eventid: this.eventId}, 
    sort: {createdAt: 1}, 
    perPage: 10, 
    reactive: true, 
    debug: true, 
}); 
console.log(this.eventId); 


class DSRegisters extends Component {  
    render() { 
........... 
} 

DSRegisters.propTypes = { 
    registers: PropTypes.arrayOf(PropTypes.object).isRequired, 
    totalCount: PropTypes.number.isRequired, 
    match: PropTypes.object.isRequired, 
    history: PropTypes.object.isRequired, 
    evnt: PropTypes.object, 
    loading: PropTypes.bool.isRequired, 
}; 

export default createContainer(({ match }) => { 
    eventId = match.params._evntid; 
    const subevent = Meteor.subscribe('events'); 

    return { 
     loading: !pagination.ready(), 
     evnt: Events.findOne(eventId), 
     registers: pagination.getPage(), 
     totalCount: Registers.find({ eventid: eventId }).count(), 
    }; 
}, DSRegisters); 
+0

ちょうど "フィルター:{イベントID:this.eventId}" にthis.eventIdを追加してはconsole.log(この.eventId);私は未定義のエラーを取得します。 – sirisakc

答えて

0

私はそれを持っています。 "regs:pagination.filters({eventid:eventId})を追加し、" "レジスタに従ってください:pagination.getPage()、" フィルタリングは正常です。

代替方法削除 "REGS" で
export default createContainer(({ match }) => { 
    eventId = match.params._evntid; 
    const subevent = Meteor.subscribe('events'); 

    return { 
     loading: !pagination.ready(), 
     evnt: Events.findOne(eventId), 
     registers: pagination.getPage(), 
     regs: pagination.filters({eventid: eventId}), 
     totalCount: Registers.find({ eventid: eventId }).count(), 
    }; 
}, DSRegisters); 

: そしてcomponentDidMountを(追加)

... 
    componentDidMount() { 
     subscription.filters({ eventid: this.props.match.params._evntid }); 
    } 
... 
    export default createContainer(({ match }) => { 
     eventId = match.params._evntid; 
     const subevent = Meteor.subscribe('events'); 

     return { 
      loading: !pagination.ready(), 
      evnt: Events.findOne(eventId), 
      registers: pagination.getPage(), 
      totalCount: Registers.find({ eventid: eventId }).count(), 
     }; 
    }, DSRegisters); 
関連する問題