【React】问一个关于react-router的问题

这样配置好以后,每次调用Route都会报错
“You tried to redirect to the same route you're currently on: "/home"”
请问该怎么优化呢?

      <Router>

<div>

<Nav/>

<Redirect to="/home"></Redirect>

<Route path="/comment" component={CommentBox}></Route>

<Route path="/home" component={Home}></Route>

<Route path="/productList" component={ProductList}></Route>

<Route path="/showdetail" component={ShowDetail}></Route>

<Route path="/showdetail/:id" component={ShowDetail}></Route>

<Route path="/login" component={Login}></Route>

<Route path="/private" component={Private}></Route>

</div>

</Router>

回答

你可以在把你的<Route> 外面包一层<Switch>

同时把你的 Redirect 放到最后面

<Router>

<div>

<Nav/>

<Route path="/" render={() => (<Redirect to="/home"/>)}></Route >

<Route path="/comment" component={CommentBox}></Route>

<Route path="/home" component={Home}></Route>

<Route path="/productList" component={ProductList}></Route>

<Route path="/showdetail" component={ShowDetail}></Route>

<Route path="/showdetail/:id" component={ShowDetail}></Route>

<Route path="/login" component={Login}></Route>

<Route path="/private" component={Private}></Route>

</div>

</Router>

把你的<Redirect to="/home"></Redirect>放最后应该也可以。

给path="/"前面加一个exact

Redirect用的位置有问题。应该是在满足某个条件的情况下,才使用Redirect执行路由重定向操作。但你现在的写法是,不管访问任何URL,Redirect这个组件都会被渲染,执行重定向动作,可能会和下面的Route匹配当前URL的操作冲突,因为理论上,当Route匹配URL时,当前的URL已经被Redirect重新修改过。具体现象待验证,但Redirect的用法是有问题的。

就用exact就可以啦
【React】问一个关于react-router的问题
跟什么前后位置没有关系

以上是 【React】问一个关于react-router的问题 的全部内容, 来源链接: utcz.com/a/72625.html

回到顶部