#reactjs #react-router #react-router-dom
Вопрос:
У меня Link
в моем Footer.js, и по какой-то причине он не работает как ссылки в браузере. Например, не показывать указатель на ссылку и т. Д. У меня есть несколько ссылок в моем Nav
компоненте. Все они работают нормально, но если я помещу a Link
в любой другой компонент, он не сработает. Я пробовал использовать BrowserRouter
вместо HashRouter
и NavLink
вместо Link,
, но проблема все еще существует. Хотя это кажется безрассудной ошибкой.
На данный момент у меня есть этот статичный веб-сайт. Вот почему я не завернул свои компоненты в Switch
и Route.
Footer.js
import { Link } from 'react-router-dom'
const Footer = () => {
return (
<div>
<h1>Create group!</h1>
<Link to="/" className="rounded">Get Started</Link>
</div>
)
}
export default Footer
App.js:
import Footer from './Footer'
import { HashRouter } from 'react-router-dom'
const App = () => {
return (
<HashRouter basename="/">
<Nav />
<Home />
<About />
<HowItWorks />
<GroupCarousel />
<EventCarousel />
<Footer />
</HashRouter>
);
}
export default App;
index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
Любая помощь будет признательна.
Комментарии:
1. это работает? Например, когда вы нажимаете на нее, она переходит на другую страницу?
2. @iagowp Я не определил никакого пути, поэтому он никуда не денется, но он не превращается в
Link
то, что не показывает указатель на курсоре.3. Вы проверили html-код? Может быть, это просто проблема css
4. @iagowp Да, я проверил там HTML. Это рендеринг
<a>
. Я также пробовал применять стили CSS, но все равно проблема существует. У меня естьLinks
Nav
компонент, и все работает нормально. И кроме этого нигде в компоненте они не работают.5. Ваша проблема в значительной степени похожа на проблему css, а не на проблему с маршрутизатором реакции. Проверьте стили, применяемые к обоим компонентам
Ответ №1:
Вы должны определить свои маршруты внутри HashRouter
, используя Switch
и Route
теги, которые будут использоваться внутри приложения. В противном случае ваши маршруты не будут работать. Попробуйте выполнить следующий код, и он будет работать так, как ожидалось.
Footer.js
import { Link } from 'react-router-dom'
const Footer = () => {
return (
<div>
<h1>Create group!</h1>
<Link to="/" className="rounded">Get Started</Link>
</div>
)
}
export default Footer
App.js
import Footer from './Footer'
import { HashRouter } from 'react-router-dom'
const App = () => {
return (
<HashRouter basename="/">
<Switch>
<Route path="/" exact component={Home} />
</Switch>
</HashRouter>
);
}
export default App;
Home.js
import React from 'react'
...
const Home = () => {
return (
<>
<Nav />
<Home />
<About />
<HowItWorks />
<GroupCarousel />
<EventCarousel />
<Footer />
</>
):
}
export default Home;
Комментарии:
1. Нимна, я тоже пробовал твое решение, но все равно не могу приступить к
Link
работе.