2016-01-04 4 views
0

Как передать реквизит от FlowRouter к моему компоненту реакции. Это возможно? Документация такая замечательная.Назначить ReactJs реквизит для 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 но массив пуст. Я должен привести логику в компонент реакции. Правильно ли это? Надеюсь нет.

ответ

0

Я думаю, что вам нужны подписки ... см документация здесь 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

+0

Спасибо, но Im get 'ReferenceError: myProjects не определен', который указывает на' data = {myProjects} ' – Sylar

+0

Да, это правильно. благодаря – Sylar

Смежные вопросы