#reactjs
Вопрос:
В файле package.json добавлены зависимости react-router-dom. Компонент приложения, завернутый BrowswerRouter, но когда я переношу маршрут с помощью switch, он выдает следующую ошибку Switch’ не экспортируется из ‘react-router-dom’. Я удалил package.json.блокировка, модули узла, снова установленный npm и установка npm @babel/core -сохранить. Все еще не работает. Я успешно потратил на это 6 часов. Можете ли вы, пожалуйста, помочь мне исправить это? почему он не импортируется?
Index.js
import {BrowserRouter} from 'react-router-dom';
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById('root')
);
App.js:
import logo from './logo.svg';
import './App.css';
import React from 'react';
import {Switch,Route,Link} from 'react-router-dom';
import Home from './Home';
class App extends React.Component {
componentDidMount(){
alert('mounting');
}
componentDidUpdate(){
alert('updated');
}
render(){
return (
<div className="App">
<div>
<Link to="/">Home</Link>
</div>
<hr />
<Switch>
<Route exact path="/">
<Home/>
</Route>
</Switch>
</div>
);
}
}
export default App;
import React from 'react';
const Home = () => {
return <h1>Home</h1>;
};
export default Home;
package.json
"dependencies": {
"@babel/core": "^7.16.0",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-router": "^6.0.0",
"react-router-dom": "^6.0.0",
"react-scripts": "4.0.3",
"web-vitals": "^1.0.1"
},
Ответ №1:
Использование Routes
вместо Switch
в react-router v6
Вы используете react-router-dom
версию 6, которая заменила Switch компонентом Routes
import {
BrowserRouter,
Routes, // instead of "Switch"
Route,
} from "react-router-dom";
// ...
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
</Routes>
</BrowserRouter>
Обратите внимание, что теперь вы также передаете свой компонент в качестве element
опоры вместо использования дочерних элементов.
Комментарии:
1. Спасибо, но я тоже пробовал это, почему это показывает ошибку при попытке импорта: ‘Switch’ не экспортируется из ‘react-router’.
2. Я обновил свой awnser, я пропустил вашу версию react-router, которая является v6, а не v5. Попробуйте новое исправление 🙂
3. Маршруты Brother не показывают ошибку, но при этом не отображается домашний компонент
4. Проверьте ссылку на документацию. v6 также изменил способ передачи компонента.
<Route exact path="/" element={<Home />} />
должно быть правильным5. Большое спасибо , брат , Это мне очень помогло
Ответ №2:
если вы хотите использовать Switch
, установите react-router-dom версии 5. Переключатель заменен в react-router-dom версии 6.
npm install react-router-dom@5
Ответ №3:
Пользователи не смогут найти переключатель react-router-dom
. Им необходимо установить версии до 5 или ниже 5. Попробуйте приведенный ниже вариант, который будет работать. Если пользователь использует маршруты вместо Switch, это может не сработать.
npm install react-router-dom@5