connected-react-router 报You cannot change

发布于 2022-09-12 01:31:38 字数 1550 浏览 27 评论 0

问题描述

项目使用react16+react-router4+connected-react-router+react-hot-loader

问题出现的环境背景及自己尝试过哪些方法

路由层级为

  • App.jsx

    • home
    • test-page

home 页面中有一个 Link 组件点击后正常可以跳转到 test-page

本地开发时,更改 home 页面的的代码后 热更新生效 页面变化后 控制台报错

    You cannot change <Router history>

报错后 我再去点击 Link 此时url中路由地址发生改变 但页面无法跳转到 test-page

但如果我更改最顶级 App.jsx 页面中的代码 就不会发生此问题

相关代码

import { Route, BrowserRouter } from 'react-router-dom';
// 不使用 ConnectedRouter 的情况下可以恢复正常
// import { ConnectedRouter } from 'connected-react-router';
import App from './App';

const propTypes = {
  history: PropTypes.object.isRequired,
};

const Router = ({ history }) => (
{// <ConnectedRouter history={history}>}
  <BrowserRouter>
    <Route path="/" component={App} />
  </BrowserRouter>
);

我将 ConnectedRouter 替换为 react-router-dom 中的 BrowserRouter 问题解决了 但是我就无法使用 connected-react-router 提供的功能了 请问此问题是 connected-react-router 造成的吗

App.jsx

render() {
    return (
      <div className="app-warp">
        <h2>Hello!</h2>
        <Switch>
          {map(routerList, (route, idx) => (
            <Route key={idx} {...route} />
          ))}
          <Route path="*" component={NotFound} />
        </Switch>
      </div>
    );
  }

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文