#reactjs #react-router
Вопрос:
В одном из моих модулей я использую этот код без каких-либо проблем:
import { Link } from "react-router-dom";
<Link to="/HowItWorks">
Continue
</Link>
Но в другом модуле я использую аналогичный код, но получаю неизменное сообщение об ошибке
import { Link } from "react-router-dom";
<Link to="/TheBook">Continue</Link>
Единственное различие заключается в том, что первый модуль находится в каталоге src/components, в то время как неисправный модуль находится в каталоге src.
В App.js (который также находится в каталоге src) код маршрутизатора включает в себя несколько модулей, включая оба вышеперечисленных:
import {
Switch,
BrowserRouter as Router,
Route,
Redirect,
} from 'react-router-dom';
import Nav from './Nav';
import Introduction from './components/Introduction.js';
import HowItWorks from './components/HowItWorks.js';
import Blog from './components/Blog.js';
import Shop from './components/Shop.js';
import TheBook from './components/TheBook.js';
import Footer from './Footer.js';
function App() {
return (
<>
<div className="App">
<Router>
<Nav />
<Switch>
<Route path="/Introduction" exact component={Introduction}></Route>
<Route path='/HowItWorks' exact component={HowItWorks}></Route>
<Route path="/Shop" exact component={Shop}></Route>
<Route path="/Blog" exact component={Blog}></Route>
<Route path="/TheBook" exact component={TheBook}></Route>
</Switch>
</Router>
<Footer />
</div>
</>
);
}
export default App;
Если я нажму ссылку на «Книгу» в навигаторе, она будет работать нормально… Есть идеи, почему это происходит ?
Комментарии:
1. Что у тебя в голове
<Footer />
?2. Где
<Link to="/TheBook">Continue</Link>
находится визуализируемое изображение? Ошибка заключается в том, что это находится за пределамиRouter
.3. Ссылка находится в модуле footer.js Этот модуль экспортируется в App.js App.js экспортируется в index.js и приложение (которое включает в себя все) отображается там.
4. Footer.js содержит ссылку на модуль «Книга», изображение и анимированную стрелку
5. функция Нижний колонтитул() { возврат ( <> <><имя класса div=»Нижний колонтитул»> <имя класса div=»Нижний колонтитул»><класс div=»Перемещение»> <класс div=»Перемещение»><класс img=»предварительный заказ»src={imgpreorderarrow} alt=»книга предварительных заказов alt»/> <класс img=»предварительный заказ»src={imgpreorderarrow} alt=»книга предварительного заказа alt»/></div> </div><имя класса div=»Букконтейнер»> <имя класса div=»Букконтейнер»><класс img=»imgBlueBook»src={imgBlueBook} alt=»Книга»/> <класс img=»imgBlueBook»src={imgBlueBook} alt=»Книга»/><имя класса div=»Фотокнига»> <имя класса div=»Кнопка»Книга»><a2 href={«/Книга»}>Узнать больше<a2 href={«/Книга»}></a2> {/* </a2><Ссылка на=»/Книга»>Продолжить<Ссылка на=»/Книга » ></Ссылка> */} </Ссылка></div> </div></div> </div></div> </div></ div> < / div > < / div > < / div > < / div > < / div > < / div > < / div></>);} экспорт нижнего колонтитула по умолчанию;
Ответ №1:
Хорошо, проблема была, как я и ожидал, не в footer.js код, но в App.js код. В footer.js код, необходимый для перемещения внутри маршрутизатора:
function App() {
return (
<>
<div className="App">
<Router>
<Footer /> {/* The footer must be inside the router for the <link> to work */}
<Nav />
<Switch>
<Route path="/Introduction" exact component={Introduction}></Route>
<Route path='/HowItWorks' exact component={HowItWorks}></Route>
<Route path="/Shop" exact component={Shop}></Route>
<Route path="/Blog" exact component={Blog}></Route>
<Route path="/TheBook" exact component={TheBook}></Route>
</Switch>
</Router>
</div>
</>
);
}
Теперь это работает должным образом.