1

初めて Rails で React Router をセットアップしようとしています。ルーター上のリンクが機能し、期待どおりにハッシュが変更されますが、レンダリングされません。デバッガーで問題を絞り込んだところ、次のことがわかりました。

  • MyRoutes (22 行目、React がルーターを作成する前) には props.children があります。
  • アプリ (レンダリング時の 6 行目) には props.children がありません。

何が起こっている?

var Route = ReactRouter.Route,
    Link = ReactRouter.Link;

var App = React.createClass({
  render: function(){
    //line 6
    return (
      <div>
        <h1>App</h1>
        <ul>
          <li><Link to="/todo">Todo</Link></li>
          <li><Link to="/comment">Comment</Link></li>
        </ul>

        {this.props.children}
      </div>
    )
  }
})

$(function(){
  var MyRoutes = (
    <Route path="/" handler={App}>
      <Route path="/todo" name="todo" handler={TodoList} />
      <Route path="/comment" name="comment" handler={Comment} />
    </Route>
  );
  //line 22
  ReactRouter.run(MyRoutes, function (Handler) {
    React.render(<Handler/>, $("#application").get(0));
  });
})
4

1 に答える 1

0

react-router-railsリポジトリを見てみました。this.props.childrenで置き換え<RouteHandler {...this.props}/>ます。ただし、次のように RouteHandler を「インポート」する必要があることに注意してくださいvar RouteHandler = ReactRouter.RouteHandler;。それで解決するはずです。

于 2016-05-02T18:19:48.797 に答える