2016-09-30 104 views
0

如何存取权限查询参数的容器,使用反应路由器和反应,kompose:流星,阵营,路由器,反应-komposer - 传递参数

我绑喜欢这一点,但它不工作:

routes.js

...

Meteor.startup(() => { 
     render(
     <Router history={ browserHistory }> 
      <Route path="/" component={ App }> 

      <IndexRoute name="index" component={ Index } onEnter={ requireAuth } /> 
      <Route name="documents" path="/documents" component={ Documents } onEnter={ requireAuth } /> 

      <Route name="list-projects" path="/list-projects" component={ Projects } onEnter={ requireAuth } /> 
      <Route name="add-project" path="/add-project" component={ AddProjectPage } onEnter={ requireAuth } /> 
      <Route name="project-detail" path="/project/:projectId" component={ProjectDetailPage} onEnter={ requireAuth } /> 


      <Route name="login" path="/login" component={ Login } /> 
      <Route name="recover-password" path="/recover-password" component={ RecoverPassword } /> 
      <Route name="reset-password" path="/reset-password/:token" component={ ResetPassword } /> 
      <Route name="signup" path="/signup" component={ Signup } /> 
      <Route path="*" component={ NotFound } /> 

      </Route> 
     </Router>, 
     document.getElementById('react-root') 
    ); 
    }); 

container1.js

import { composeWithTracker } from 'react-komposer'; 
import { Projects } from '../../api/projects/projects.js'; 
import { ProjectDetail } from '../components/project-detail.js'; 
import { Loading } from '../components/loading.js'; 
import { Meteor } from 'meteor/meteor'; 
const composer = (params, onData) => { 
    const subscription = Meteor.subscribe('projects'); 
    if (subscription.ready()) { 
    const project = Projects.find({_id:params._id}).fetch(); 
    onData(null, { project}); 
    } 
}; 
export default composeWithTracker(composer, Loading)(ProjectDetail); 

回答

0

你可能搞明白了现在,但你可以使用你的例子只是一个小修改进去,像这样的集装箱的道具参数:

const composer = (props, onData) => { 

    const subscription = Meteor.subscribe('projects'); 
    if (subscription.ready()) { 
    const project = Projects.find({_id:props.params.projectId}).fetch(); 
    onData(null, { project}); 
    } 
}; 
export default composeWithTracker(composer, Loading)(ProjectDetail); 

阵营路由器将一切传递给其子组件。 props是一个对象,因此只需获取props.params的值即可访问参数。根据您的需求,您可以在容器内访问更多东西。