代码之家  ›  专栏  ›  技术社区  ›  Oblomov

如何使用React路由器获得两个组件的异或路由?

  •  0
  • Oblomov  · 技术社区  · 7 年前

    class App extends Component {
        render() {
            return (
                <div>
                    <Route path='/:category?/:post?' component={Posts}/>
                    <Route exact path='/edit' component={PostForm}/>
                </div>
            )
        }
    }
    

    现在的问题是,我希望具有异或行为,即当渲染第一个组件时,我不希望渲染第二个组件,反之亦然。我实际得到的是,使用像localhost3000/books/123344这样的URL,只有第一个组件被呈现,但使用URL localhost3000/create,两个组件都被呈现。

    原因是什么?如何获得这两个组件所需的异或渲染?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Mayank Shukla    7 年前

    使用react路由器 switch ,它将仅渲染一个组件。同时切换路线的顺序。

    试试这个:

    <Switch>
        <Route exact path='/edit' component={PostForm}/>
        <Route path='/:category?/:post?' component={Posts}/>
    </Switch>