#html #css #reactjs #routes
Вопрос:
Я очень новичок в реагировании и пытаюсь работать на своем первом веб-сайте. Я пытался найти свою проблему в Интернете, я сталкивался с аналогичными вопросами, но не мог понять, в чем именно заключается моя проблема.
Мой макет компонентов выполнен в стиле прокрутки вниз (портфолио), когда я пытаюсь, например, проложить маршрут к своему компоненту контактов, он не будет отображаться, если я не обновлю свою страницу. кроме того, вместо прокрутки вниз до компонента он появится вверху .(Надеюсь, я ясно выразился)
Моя функция Приложения
import { useState } from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import './App.css';
import Contact from './Components/Contact/Contact';
import Form from './Components/FormArea/Form/form';
import Introdoction from './Components/Introdoction/Introdoction';
import NavBar from './Components/NavBar/NavBar';
import NavigationBar from './Components/NavigationBarHeader/NavigationBar/NavigationBar';
import Portfolio from './Components/Portfolio/Portfolio';
import Routing from './Components/Routing/Routing';
import Skills from './Components/Skills/Skills';
function App() {
return (
<BrowserRouter>
<Switch>
<div className="App">
<NavigationBar/>
<section className="section">
<Route path="/contact" component={Contact} exact/>
<Introdoction/>
<Portfolio/>
<Skills/>
{/* <Contact/> */}
<Form/>
</section>
</div>
</Switch>
</BrowserRouter>
);
}
export default App;
Я пытаюсь настроить компонент «Контакт» для этого примера.
Компонент «Мое меню/Навигационная панель»
import { Component, MouseEventHandler } from "react";
import {MenuItems} from "../MenuItems/MenuItems";
import "./NavigationBar.css";
import icon from '../../../Assets/icon.png'
import {Button} from "../Button/Button";
import { NavLink, Redirect, Route, Switch, useHistory } from "react-router-dom";
import Contact from "../../Contact/Contact";
class NavigationBar extends Component {
state = {clicked : false}
handleClick = () => {
this.setState ( { clicked: !this.state.clicked } );
};
public render(): JSX.Element {
return (
<nav className="NavbarItems ">
<img className="navbar-logo"src={icon } />
<div className="menu-icon" onClick={this.handleClick}>
<i className={this.state.clicked ? 'fas fa-times' : 'fas times'}></i>
</div>
<ul className={this.state.clicked ? 'nav-menu active' : 'nav-menu'}>
{MenuItems.map((item,index) => {
return (
<li key={index}>
<NavLink to={item.url} className={item.cName} >{item.title} </NavLink>
</li>
)
})}
</ul>
<Button>Sign up</Button>
</nav>
);
}
}
export default NavigationBar;
Компонент ItemMenu
import { NavLink } from "react-router-dom";
import "./MenuItems.css";
export const MenuItems = [
{
title: 'Home',
url: '/Home',
cName: 'nav-links'
},
{
title: 'Introduction',
url: '/introduction',
cName: 'nav-links'
},
{
title: 'Skills',
url: '/skills',
cName: 'nav-links'
},
{
title: 'Projects',
url: '/projects',
cName: 'nav-links'
},
{
title: 'Contact',
url: '/contact',
cName: 'nav-links'
},
];
При необходимости я мог бы добавить дополнительную информацию. Я надеюсь, что мой вопрос ясен в том, в чем моя проблема.
Спасибо.
Ответ №1:
Если я правильно понял ваш вопрос, вам нужна одна-единственная страница, где все находится друг под другом, и когда вы нажимаете ссылку, она прокручивает вас вниз до этого места. В этом случае я бы использовал:
<a href="#contact"></a>
<Contact id="contact" />
react-маршрутизатор создает новые подстраницы, которые вам не нужны (если я вас правильно понял)