【问题标题】:react-router routes with /yourRoute not /#/aRoutereact-router 路由与 /your Route not /#/a Route
【发布时间】:2016-03-01 05:09:27
【问题描述】:

我是 react-router 的新手,想知道是否可以就我的项目中的一些基本内容获得一些帮助。我的路由器正在运行,一切正常,除了当我去我的路线/about(我唯一的路线)时,我得到“Cannot GET /about”但是当我去/#/about时它成功地去路线。使用 Link 也可以,但使用 /#/about 路由。总之,我的项目如下所示:

render((
  <Router history={hashHistory}>
    <Route path="/" component={Layout}>
      <Route path="/about" component={About}/>
    </Route>
  </Router>
  ),

document.getElementById('app'))

export default class Layout extends React.Component {
  render() {
    return (
      <div>
        <nav class="navbar navbar-default navbar-fixed-top">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                  <span class="sr-only">Toggle navigation</span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
              </button>
          <Link to="/" class="navbar-brand">React Router Test</Link>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li><Link to="/about">About</Link></li>
          </ul>
        </div>
      </div>
    </nav>
    <div id="page">
    {this.props.children}
    </div>
    <footer class="footer">
      <div class="container">
        <p class="text-muted">Place sticky footer content here.</p>
      </div>
    </footer>
  </div>
);
  }
}

关于组件

const styles = {}
styles.body = {
  margin: 70,
}
export default React.createClass({
  render() {
    return <div style={styles.body}>About</div>
  }
})

请告诉我如何让应用识别/about 而不仅仅是/#/about

【问题讨论】:

    标签: javascript reactjs react-router url-routing


    【解决方案1】:

    根据您的 react-router 版本,如何准确访问和更改这可能会有所不同,但要点应该相同。

    您当前正在使用哈希历史记录。这意味着您的网址将使用哈希构建。另一个选项是使用浏览器历史记录。这将启用干净的 url www.example.com/about

    import { browserHistory } from 'react-router'
    render((
      <Router history={browserHistory }>
        <Route path="/" component={Layout}>
          <Route path="/about" component={About}/>
        </Route>
      </Router>
      ),
    

    https://github.com/reactjs/react-router/blob/master/docs/guides/Histories.md

    附言。如果上述方法不起作用,请查阅 react-router 文档和您使用的版本。他们在这个部门进行了一些 API 更改和包更改(history 包有效地推动了这种行为)。

    【讨论】:

    • 嗯没有用。我需要 npm 安装历史并将其链接到某个地方吗?
    • 根据您的 react-router 版本,是的,您应该这样做。这是 v1.x 的链接。 github.com/reactjs/react-router/blob/1.0.x/docs/guides/basics/…
    • hmmm,我让它使用 browserHistory 并且链接不使用 #,但由于某种原因,我在尝试引用 url 中的路由时仍然收到 get 错误...
    • 您是否已将服务器配置为在该 url 上返回带有 react 应用程序的页面?否则它不会知道实际返回基本 html 页面和 react-router 将无法初始化。
    猜你喜欢
    • 2022-12-26
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2019-01-08
    • 2017-12-22
    • 1970-01-01
    • 2012-08-11
    相关资源
    最近更新 更多