react-router-dom export ‘Switch‘ was not found in ‘react-router-dom‘错误解决方法

本文介绍了如何在从react-router-dom v5升级到v6时,正确处理Switch到Routes的转换问题,提供了解决方案:回退至v5版本或更新代码结构。

问题原因,版本问题。

v5 Switch可以使用,v6升级后需要调整对应方法

少し古いガイドラインに沿ってアプリ制作をしていたら、いきなりSwitchがないというエラー。

react-router-domのバージョンが原因。v6以降はSwitchRoutesになり書き方に変更点が数カ所。

①v5に戻す、②v6の書き方へ変更するの2種類の対処法をまとめました。

対処法①

バージョンをv5に戻す

以下のコマンドで、現行バージョンをアンインストールして、v5をインストールし直す。

npm uninstall react-router-dom

npm install react-router-dom@5.2.0

対処法②

Switch → Routesに変更

index.jsx<変更前>

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore } from 'redux';
import { BrowserRouter, Route, Switch } from 'react-router-dom';

import App from './components/app';

const store = createStore()

ReactDOM.render(
  <Provider store={store}>
    <BrowserRouter>
      <Switch>
        <Route path="/channels/:channel" component={App} />
      </Switch>
    </BrowserRouter>
  </Provider>,
  document.getElementById("root");
);

index.jsx<変更前>

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore } from 'redux';
import { BrowserRouter, Route, Routes } from 'react-router-dom';

import App from './components/app';

const store = createStore()

ReactDOM.render(
  <Provider store={store}>
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<App />} />
      </Routes>
    </BrowserRouter>
  </Provider>,
  document.getElementById("root");
);
  • importの変更
  • Switch→Routesに変更
  • component→element
  • {App}→{}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值