React Router,页面未找到处理

时间:2018-07-07 22:42:20

标签: reactjs react-router react-router-v4

我的路线设置如下:

             <Container>
                <Input />
                <Switch>
                    <Route path='/' exact component={LatestMovies}/>
                    <Route path='/movie/:id' component={MovieWithDetails}/>
                    <Route component={PageNotFound}/>
                </Switch>
            </Container>

1。我如何设置路由器,以便Input组件中除Switch组件之外的所有其他组件都可以看到PageNotFound组件?

我知道我可以手动将Input组件添加到其他组件中,但是想知道是否有更好的方法吗?

2。在MovieWithDetails组件内部,我正在使用fetch,在那里我获取带有ID的电影,这是通过单击LatestMovies组件中的链接通过路由器道具获得的。

该链接和任何ID也可以手动输入,所以我想知道,我该如何处理PageNotFound组件的显示?

1 个答案:

答案 0 :(得分:0)

1-您尝试过使用多个组件吗?像这样:

<Switch>
        <Input/>
        <Route path='/' exact component={LatestMovies}/>
        <Route path='/movie/:id' component={MovieWithDetails}/>
</Switch>

<Switch>
<Route path='/somepath' component={PageNotFound}/>
</Switch>

2-我认为这是主观的。在我看来,我将显示一条反馈,指出没有电影具有键入的ID,并且我不会重定向到PageNotFound组件。但是,如果您想这样做,只需使用简单的“ this.props.history.push('/ somepath')”即可