流星将React Router与Iron Router结合使用

问题描述 投票:0回答:1

我想知道如何将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'));
});

但是问题在于,随着URL的更改,React应用程序不会重绘组件。 我必须在浏览器中刷新整个页面才能看到更新的页面。 有什么想法或替代方法吗?

reactjs meteor meteor-blaze
1个回答
0
投票

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

一种解决方案是使用memoryHistory在React Router中配置路由。 然后,侦听window.history.pushState并将新的URL推送到memoryHistory

© www.soinside.com 2019 - 2024. All rights reserved.