Это вопрос о настройке маршрутов маршрутизации

#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. Спасибо! Рад узнать другой способ с хорошим советом. Хорошего дня 🙂