如何防止反应路由器多个组件

时间:2021-07-05 12:19:49

标签: javascript reactjs react-router-dom

import "./App.scss";
import Header from "./containers/Header/Header";
import Home from "./containers/Home/Home";
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
import SingleMoviePage from "./containers/SingleMoviePage/SingleMoviePage";

const App = () => {
  return (
    <Router>
      <Switch>
        <div className="app">
          <Route exact path={"/" | "/page"}>
            <Header />
            <Home />
          </Route>
          <Route path="/movie/:page/:genre/:id" component={SingleMoviePage} />
        </div>
      </Switch>
    </Router>
  );
};

export default App;

嗨,当我点击卡片组件时,我想转到 SinglePageComponent 但问题是当我转到 SinglePageComponent 时,所有组件都会呈现

我的 DOM 看起来像:

<div class="app">
<div class="header">...</div>
<div class="home">...</div>
<div class="single-movie">...</div>
</div>

我希望它看起来像这样。

<div class="app">
<div class="single-movie">...</div>
</div>

1 个答案:

答案 0 :(得分:1)

这是因为您正在无条件地渲染标题和主页组件。尝试这样做:

<Router>
     <div className="app">
      <Switch>
          <Route exact path={["/","/page"]} render= {()=>{
             return(
                <Header/>
                <Home/>
                   )}
            }/>
          <Route path="/movie/:page/:genre/:id" component={SingleMoviePage} />
        </Switch>
      </div>
    </Router>