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()