#reactjs #routes
#reactjs #маршруты
Вопрос:
import React from 'react';
import {Link, Route, BrowserRouter as Router, Switch} from "react-router-dom";
import './App.css';
import User from './Component/User';
import AdContent from './Component/AdContent';
//Home.js
function Home(){
return(
<Router>
<header>
<div>ShareAdsLink</div>
<nav>
<Link to="/User">
<li className="button">LogIn</li>
</Link>
<Link to="/AdContent">
<li className="button">SignUp</li>
</Link>
</nav>
</header>
<Switch>
<Route path="/User" component={User} />
<Route path="/Adcontent" component={AdContent}/>
</Switch>
</Router>
);
}export default Home;
//App.js
import React from 'react';
import Home from './Home';
import {Route, BrowserRouter as Router, Switch} from "react-router-dom";
function App() {
return (
<Router>
<Route path="/" component={Home} exact/>
</Router>
);
}
export default App;
Что я пытаюсь сделать, так это показать экран по умолчанию (страницу, которую вы видите при входе) Home
.
В нем есть кнопки входа и регистрации Home
, и если я нажму эту кнопку, должна появиться новая страница. Но в моих результатах должна быть открыта новая страница, отдельная от содержимого Home
, но содержимое Home
тоже будет отображаться.
Как я могу отобразить новую страницу? Использование точных ключевых слов бесполезно.
Это мой первый вопрос. Во-вторых, можете ли вы дать мне совет о том, где (например, App.js ,,) для настройки базового экрана?
Комментарии:
1. Привет @bover Я предлагаю вам использовать маршрутизацию следующим образом github.com/kantivekariya/react-antdesign-redux-reducer .
Ответ №1:
Подобная реструктуризация вашего приложения должна помочь:
//App.js
import React from "react";
import Home from "./Home";
import { Route, BrowserRouter as Router, Switch } from "react-router-dom";
import User from "./Component/User";
import AdContent from "./Component/AdContent";
function App() {
return (
<Router>
<Route path="/" exact component={Home} />
<Switch>
<Route exact path="/User" component={User} />
<Route path="/Adcontent" component={AdContent} />
</Switch>
</Router>
);
}
export default App;
//Home.jsx
import React from "react";
import { Link } from "react-router-dom";
function Home() {
return (
<header>
<div>ShareAdsLink</div>
<nav>
<Link to="/User">
<li className="button">LogIn</li>
</Link>
<Link to="/AdContent">
<li className="button">SignUp</li>
</Link>
</nav>
</header>
);
}
export default Home;
Комментарии:
1. Спасибо! Он работает нормально. Если вы в порядке, можете ли вы рассказать мне о проблеме с моим кодом?
2. Видите ли, у вас есть два <Router> s; Один в компоненте приложения, а другой в домашнем компоненте. И маршрут в компоненте приложения всегда точно соответствует! который, в свою очередь, отображает домашний компонент, который имеет свой собственный маршрутизатор и маршруты!
3. Если это помогло вам решить вашу проблему, пожалуйста, отметьте ее как принятую, чтобы другие тоже могли знать. 🙂
Ответ №2:
Проблема
Вы отображаете заголовок своей домашней страницы, несмотря ни на что, независимо от пути / страницы.
Решение
Просто отобразите содержимое заголовка в его собственном маршруте внутри Switch
и переместите маршруты App
в. Если поместить менее конкретный домашний путь ( "/"
) последним / позже, то сначала будут предприняты попытки сопоставления более конкретных путей, и если предыдущий путь не будет сопоставлен, тогда заголовок будет отображаться.
function App() {
return (
<Router>
<Switch>
<Route path="/User" component={User} />
<Route path="/Adcontent" component={AdContent} />
<Route path="/">
<header>
<div>ShareAdsLink</div>
<nav>
<Link to="/User">
<li className="button">LogIn</li>
</Link>
<Link to="/AdContent">
<li className="button">SignUp</li>
</Link>
</nav>
</header>
</Route>
</Switch>
</Router>
);
}
Комментарии:
1. Спасибо! Рад узнать другой способ с хорошим советом. Хорошего дня 🙂