使用Meteor 1.2.0.1和React。我的简单应用程序很好用,但现在我需要铁路由器。
应用布局:
client\ app.jsx lib\ router.jsx server views\ home.jsx layout.jsx
home.jsx:
Home = React.createClass({ render() { return ( <div> <h3>Hello World</h3> <p>from home</p> </div> ); } });
layout.jsx:
Layout = React.createClass({ render() { return ( <div> {this.props.children} </div> ); } });
route.jsx:
Router.route('/', () => { let page = ( <Layout> <Home/> </Layout> ); React.render(page, document.body); });
当然,在my中app.jsx,它可以很好地显示在html的正文中,但是该设置不适用于多页应用程序,因此这是路由的需求。里面是:
app.jsx
Meteor.startup(() => { let app = ( <Layout> <Home/> </Layout> ); React.render(app, document.body); });
问题是,如何使铁路由器(routes.jsx)显示内容?
routes.jsx
我强烈建议使用Flow Router而不是Iron Router。将Flow Router添加到您的应用中,然后再添加kadira:react- layout。遵循这种格式,它应该可以工作:
kadira:react- layout
FlowRouter.route('/', { name: 'home', action() { ReactLayout.render(Layout, {content: <Home />}); } }); FlowRouter.route('/login', { name: 'loginPage', action() { ReactLayout.render(Layout, {content: <Login />}); } });
您的Layout组件应如下所示:
Layout
Layout = React.createClass({ render() { return ( <div> <Header /> {this.props.content} </div> ); } });
路由到带有参数的页面:
FlowRouter.route('/detail/:id', { name: 'prodDetail', action() { ReactLayout.render(Layout, {content: <ProdDetail />}); } });
然后在ProdDetail组件中,可以参考FlowRouter.getParam('id')。查看完整的FlowRouter文档。
ProdDetail
FlowRouter.getParam('id')