Tracker.autorun在componentDidMount内部无法正常工作

时间:2018-06-19 17:26:39

标签: reactjs meteor mongodb-query meteor-tracker

当我指定输出的投影(字段)时,Tracker.autorun在react的componentDidMount内部不起作用。但是当我在mongo查询上没有任何投影时,同样的效果。

这有效:

Meteor.subscribe('quotes');
        this.quotesTracker = Tracker.autorun(() => {
            const quotes = Quotes.find(
                {instrument_token: 12374274},
                {
                    sort: {timestamp: 1},
                    limit: 5000
                }
            ).fetch();

这不起作用

Meteor.subscribe('quotes');
    this.quotesTracker =Tracker.autorun(() => {
            const quotes = Quotes.find(
                {instrument_token: 12374274},
                {
                    fields: {
                        last_price: 1,
                        timestamp: 1,
                                           },
                    sort: {timestamp: 1},
                    limit: 5000
                }
            ).fetch();

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

我认为Meteor的跟踪器不能与ReactJS配合使用,因为它们的重新渲染机制不同。

您可能要使用此软件包。

https://github.com/meteor/react-packages/tree/devel/packages/react-meteor-data

您可以像这样使用它。

fun f( (func: () -> Any?)? )

import { Meteor } from 'meteor/meteor'; import { mount } from 'react-mounter'; import { withTracker } from 'meteor/react-meteor-data'; import { IndexPage } from "./index-page"; FlowRouter.route('/', { action: () => { mount(IndexPageContainer, {}); } }); export const IndexPageContainer = withTracker(() => { Meteor.subscribe('whatever'); return { Meteor: { collection: { whatever: Whatever.find().fetch() }, user: Meteor.user(), userId: Meteor.userId(), status: Meteor.status(), loggingIn: Meteor.loggingIn() } }; })(IndexPage); 是您的实际组成部分。

然后您可以通过IndexPage

访问数据库