【问题标题】:Can I have the same route handler for two routes我可以为两条路线使用相同的路线处理程序吗
【发布时间】:2023-03-11 13:02:01
【问题描述】:

我定义了这两条路线:

<Route name='register' handler={Register} >
    <Route name='registerpromotion' path='/registerpromotion/:promotionCode' handler={Register}/>
</Route>

因此,两条路由都使用同一个名为 Register 的处理程序。

registerpromotion 路由的情况下,我传入一个属性,而在 register 路由的情况下,我没有。

我无法让它工作——promotionCode 属性始终未定义。

有谁知道您是否可以对两条路线使用相同的处理程序?

非常感谢!

【问题讨论】:

  • 你的意思是让Routes 像这样嵌套吗?按照你的方式,Register 将有一个孩子 Register,但内部组件永远不会有另一个孩子。似乎是一个奇怪的设置,可能是问题的一部分。

标签: reactjs react-router


【解决方案1】:

此代码来自 rpflorence 的 react-router issue #410

/** @jsx React.DOM */
var React = require('react');
var Router = require('react-router');
var Route = Router.Route;
var Routes = Router.Routes;
var Link = Router.Link;

var Foo = React.createClass({  
  render: function() { 
    return (
      <div>
        <p>hello</p>
        <p>stuffId: {this.props.params.stuffId}</p>
        <ul>
          <li><Link to="root">top</Link></li>
          <li><Link to="stuff" params={{stuffId: 'one'}}>one</Link></li>
          <li><Link to="stuff" params={{stuffId: 'two'}}>two</Link></li>
        </ul>
        <this.props.activeRouteHandler />
      </div>
    );
  }
});

var routes = (
  <Routes>
    <Route name="root" path="/" handler={Foo}>
      <Route name="stuff" path=":stuffId" handler={Foo}/>
    </Route>
  </Routes>
);

React.renderComponent(routes, document.body);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-20
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    相关资源
    最近更新 更多