Несколько BrowserRouter показывает несколько компонентов - PullRequest
0 голосов
/ 24 сентября 2018

Я хотел использовать basename для разделения компонентов.У меня также есть глобальные URL, поэтому я использовал 3 BrowserRouter s.Это вызывает показ нескольких содержимого.Если я захожу / fruit / search, он показывает как содержимое компонента Homepage, так и компонент FruitSearch.Как именно я могу использовать несколько BrowserRouter с?

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 Ответ

0 голосов
/ 02 августа 2019

Решение простое.HomePage выполняет рендеринг, потому что ваш путь соответствует как /, так и /fruit/search.Чтобы избежать этого, используйте точный, поскольку он будет отображать компонент только тогда, когда точные пути будут совпадать.Таким образом, обновленный код будет

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...