Реагируйте маршрутизатором с другими компонентами

#javascript #reactjs #react-router

Вопрос:

У меня есть одна проблема, которую я не могу понять. Я полностью новичок в ReactJS, поэтому я надеюсь, что вы мне поможете. Я сделал навигацию с помощью маршрутизатора React, и это работает, но когда я начинаю отображать все остальные компоненты в App.js ничего не произошло. Когда я маршрутизирую через панель навигации, она отображается, но при прокрутке ничего не произошло.

Это моя App.js без рендеринга других компонентов, которые работают нормально , но когда я добавляю что-то подобное, это то же самое без прокрутки.

мой код :

 const App = () => {
          return (
            <div>
              <Router>
                <Topbar />

                <About />
                <Switch>
                  <Route exact path="/" component={Home} />
                  <Route path="/about" component={About} />
                  <Route path="/service" component={Service} />
                  <Route path="/portfolio" component={Portfolio} />
                  <Route path="/contact" component={Contact} />
               </Switch>
            </Router>
           </div>
    );
};

export default App;
 

Ответ №1:

Вам нужно использовать перенаправление

1/ import {Redirect} from 'react-router-dom';

2/ Измените свой домашний маршрут на <Route exact path="/home" component={Home} />

3/ Добавьте перенаправление (это должен быть последний маршрут)

 <Route exact path="/">
  <Redirect to="/home" />
</Route>
 

Пример :

 import React from 'react';
import {
  BrowserRouter as Router,
  Route,
  Switch,
  Redirect
} from 'react-router-dom';

import Home from './Home';
import About from './About';
import Service from './Service';
import Portfolio from './Portfolio';
import Contact from './Contact';

const App = () => {
  return (
    <Router>
      <Switch>
        <Route path="/" component={Home} />
        <Route path="/about" component={About} />
        <Route path="/service" component={Service} />
        <Route path="/portfolio" component={Portfolio} />
        <Route path="/contact" component={Contact} />

        {/* Redirect */}
        <Route exact path="/">
          <Redirect to="/home" />
        </Route>
      </Switch>
    </Router>
  );
};

export default App;
 

Если вы хотите проверить демо-версию : Stackblitz