Назначьте реквизиты ReactJs для FlowRouter

Как передать реквизиты из FlowRouter в мой реагирующий компонент. Это возможно? Документация великолепна.

Я делаю что-то вроде этого:

FlowRouter.route('/dashboard', {
  name: 'dashboard',
  action(){
    var x = Projects.find().fetch(); // this not working
    console.log(x); // x is []. Why?
    ReactLayout.render(App, {
      nav: <Nav />,
    content: <Profile data={x}/>
    });
  }
});

В моем приложении я хочу сказать this.props.data, но массив пуст. Я должен поместить логику в компонент реакции. Это правильный путь? Надеюсь нет.


person Sylar    schedule 04.01.2016    source источник


Ответы (1)


Я думаю, вам нужны подписки... см. документацию здесь https://github.com/kadirahq/flow-router#subscription-management

FlowRouter.route('/dashboard', {
  name: 'dashboard',
  subscriptions(){
      this.register('myProjects', Meteor.subscribe('projects'));
  },
  action(){
    ReactLayout.render(App, {
      nav: <Nav />,
      content: <Profile data={myProjects}/>
    });
  }
});

Но после дальнейшего рассмотрения они на самом деле рекомендуют вам получать данные о метеорах в компоненте React... см. документацию здесь.

https://kadira.io/academy/meteor-routing-guide/content/subscriptions-and-data-management/with-react

  Profile = React.createClass({
     mixins: [ReactMeteorData],
     getMeteorData() {
       var data = {};
       var handle = Meteor.subscribe('projects');
       if(handle.ready()) {
         data.projects = Projects.find({});
       }
       return data;
     },    
  });

Пример проекта: https://github.com/aaronksaunders/meteor-react-demo2

person Aaron Saunders    schedule 04.01.2016
comment
Спасибо, но я получаю ReferenceError: myProjects is not defined, что указывает на data={myProjects} - person Sylar; 04.01.2016