更新到React Router4.2后,无法用浏览器直接打开跳转后的页面

发布于 2022-09-06 12:06:08 字数 2002 浏览 10 评论 0

可以在页面中进行跳转且内容有变更,浏览器地址也有变更
但是如果将此时的跳转后的浏览地址在新浏览器中“直接”访问是无法进行打开的,Cannot GET 错误。
我其实最终想要的效果是,当输入不同url地址,显示的界面是不同的。目前还有个问题是跳转后还保留了上面的头部信息

其他:
1.使用的是 "webpack-dev-server": "^2.11.0" 启动
webpack-dev-server --content-base src --inline --hot
2."react-router-dom": "^4.2.2"

代码:
root.js

import React from 'react';
import ReactDOM from 'react-dom';
import Index from './index';
import ComponentList from './components/list';
import {BrowserRouter as Router,Route,Link} from 'react-router-dom';
export default class Root extends React.Component{
  render(){
    return(
      <Router>
        <div>
          <ul>
            <li><Link to="/">Index</Link></li>
            <li><Link to="/list">List</Link></li>
          </ul>
          <hr />
          <Route exact path="/" component={Index} />
          <Route exact path="/list" component={ComponentList} />

        </div>
      </Router>
    );
  };
}
ReactDOM.render(<Root/>,document.getElementById('example'));

index.js

var React = require('react');
export default class Index extends React.Component{
  render(){
    return(
      <div>
            Index
      </div>
    )
  }
}

list.js

import React from 'react';
export default class ComponentList extends React.Component{
  render(){
    return(
      <div>
        <h2>这个是列表页面</h2>
      </div>
    );
  };
}

首页
连接点击
直接访问

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故事未完 2022-09-13 12:06:09

总算问题已经解决,将BrowserRouter修改为HashRouter
原来方式:

import {BrowserRouter as Router,Route,Link} from 'react-router-dom'

修改为:

import {HashRouter as Router,Route,Link} from 'react-router-dom';

其他代码不必变更,官方例子https://reacttraining.com/rea...

最后的乘客 2022-09-13 12:06:09

你说的这种情况在刷新的时候也存在,比如跳转到/list下,刷新页面就无法显示还报错。

试一下这种方式:

render(
  <BrowserRouter>
    <Switch>
      <Route exact path="/" component={Index}/>
      <Route exact path="/list" component={List}/>
    </Switch>
  </BrowserRouter>,
  document.getElementById('container')
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文