Multiple BrowserRouter Shows Multiple Components

别等时光非礼了梦想. 提交于 2020-08-25 04:05:25

问题


I wanted to use basename to separate components. I also have global urls so I ended up using 3 BrowserRouters. This causes showing multiple contents. If I go /fruit/search, it shows both content of Homepage component and FruitSearch component. How exactly can I use multiple BrowserRouters?

class App extends Component {
    render() {
        return (
            <div>
                <Header/>
                <BrowserRouter basename='/vegetable'>
                    <Switch>
                        <Route exact path='/search' component={VegetableSearch}/>
                        <Route exact path='/contact/:sellerId' component={ContactSeller}/>
                    </Switch>
                </BrowserRouter>
                <BrowserRouter basename='/fruit'>
                    <Switch>
                        <Route exact path='/search' component={FruitSearch}/>
                        <Route exact path='/contact/:sellerId' component={ContactSeller}/>
                    </Switch>
                </BrowserRouter>
                <BrowserRouter>
                    <div>
                        <Route path='/login' component={Login}/>
                        <Route path='/register' component={Registration}/>
                        <Route path='/about' component={AboutUs}/>
                        <Route path='/faq' component={Faq}/>
                        <Route path='/' component={Homepage}/>
                    </div>
                </BrowserRouter>
                <Footer/>
            </div>
        );
    }
}

export default App;

回答1:


The solution is simple. The HomePage is rendering because your path matches both /as well as /fruit/search. To avoid this thing, use exact as it would render the component only when exact paths would match. So the updated code would be

<BrowserRouter>
  <div>
    <Route exact path="/login" component={Login} />
    <Route exact path="/register" component={Registration} />
    <Route exact path="/about" component={AboutUs} />
    <Route exact path="/faq" component={Faq} />
    <Route exact path="/" component={Homepage} />
  </div>
</BrowserRouter>


来源:https://stackoverflow.com/questions/52481536/multiple-browserrouter-shows-multiple-components

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!