少し古いガイドラインに沿ってアプリ制作をしていたら、いきなりSwitchがないというエラー。
react-router-dom
のバージョンが原因。v6以降はSwitch
がRoutes
になり書き方に変更点が数カ所。
①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}→{}