流星使用React Router和Iron Router

时间:2017-02-01 03:37:10

标签: reactjs meteor meteor-blaze

我想知道如何将React Router与Iron Router一起使用。原因是我开始在现有项目中使用React和React Router。

这是我目前正在做的事情:

  • 使用铁路由器渲染Blaze模板
  • 使用Template#onRendered,在模板中渲染React应用程序。

routes.js

Router.route('/admin/:tab1?/:tab2?/:tab3?/:tab4?', function () {
  this.layout('admin');
});

admin.html

<template name="admin">
  <div id="admin-wrapper"></div>
</template>

admin.js

Template.admin.onRendered(function () {
  render((
    <Router>
      ...
    </Router>
  ), this.find('#admin-wrapper'));
});

但问题是React应用程序不会在URL更改时重绘组件。我必须在浏览器中刷新整个页面以查看更新的页面。任何想法或替代方法?

1 个答案:

答案 0 :(得分:0)

这两个路由器不兼容,因为它们将不同的状态推送到window.history

解决方案是使用memoryHistory在React Router中配置路由。然后,听取window.history.pushState并将新网址推送到memoryHistory