Tracker.autorun не работает внутри компонента DidMount ofact

Tracker.autorun не работает внутри componentDidMount реагирует, когда я указываю проекцию (поля) для вывода. Но то же самое работает, когда у меня нет проекции на запрос монго.

Это работает:

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 ответ

Я не думаю, что трекер Meteor хорошо работает с ReactJS, поскольку их механизм рендеринга отличается.

Возможно, вы захотите использовать этот пакет.

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

Вы можете использовать это так.

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 это ваш фактический компонент.

Затем вы можете получить доступ к БД по this.props.Meteor.collection.whatever.find()

Другие вопросы по тегам