【问题标题】:react router don't show nested route反应路由器不显示嵌套路由
【发布时间】:2015-08-17 20:53:08
【问题描述】:

按照docs, 我有这个代码:

var React = require('react');
var Router = require('react-router');
var Route = Router.Route;
var RouteHandler = Router.RouteHandler;
var Link = Router.Link;

var About = React.createClass({
    render: function () {
        return <h2>About</h2>;
    }
});

var Inbox = React.createClass({
    render: function () {
        return <h2>Inbox</h2>;
    }
});

var Home = React.createClass({
    render: function () {
        return <h2>Home</h2>;
    }
});

var Message = React.createClass({
    componentDidMount: function () {
        // from the path `/inbox/messages/:id`
        var id = this.props.params.id;
        console.log('id',id);
    },
    render () {
        return (
            <div>
                <h1>Message  {this.props.params.id}</h1>
            </div>
        );
    }
});

var App = React.createClass({
    render () {
        return (
            <div>
                <h1>App</h1>
                <ul>
                    <li><Link to="/">Home</Link></li>
                    <li><Link to="about">About</Link></li>
                    <li><Link to="inbox">Inbox</Link></li>
                    <li><Link to="message" params={ {id: 'myid'} }>Inbox message</Link></li>
                </ul>
                <RouteHandler {...this.props}/>
            </div>
        );
    }
});

// declare our routes and their hierarchy
var routes = (
    <Route handler={App}>
        <Route name="home" path="/" handler={Home}/>
        <Route name="about" path="/about" handler={About}/>
        <Route name="inbox" path="/inbox" handler={Inbox}>
            <Route name="message" path="/messages/:id" handler={Message}/>
        </Route>
    </Route>
);

Router.run(routes, Router.HashLocation, (Root, state) => {
    var params = state.params;
    React.render(<Root  params={params} />, document.body);
});

我想知道为什么如果我点击 In box message 链接我会看到 收件箱而不是消息

怎么了?

【问题讨论】:

  • 您的控制台中有任何内容吗?如果消息无法呈现,它看起来就像是您的收件箱呈现,因为它们是嵌套的。
  • @PhilVarg 不,控制台中没有 id。

标签: reactjs react-router


【解决方案1】:

如果你用<DefaultRoute handler={Message} />? 替换消息路由会发生什么

【讨论】:

    【解决方案2】:

    这是什么版本的反应路由器?在 1.0 之前的版本(可能在 1.0 中仍然可以使用),您可以像这样传递参数:

    <Link to="message" params={ {id: myid} }>In box message</Link>
    

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 2016-08-18
      • 1970-01-01
      • 2019-01-12
      • 2017-08-06
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      相关资源
      最近更新 更多