我想通过3个站点进行路由。登录-仪表板-详细信息 详细信息基于仪表板中的数据选择。 如果我刷新url / Details站点,则上下文会丢失,我想重定向到Dashboard,但是在我可以重定向之前,Details会抛出错误。我该如何改变这种行为?
我尝试了以下方法,但均未成功: 1.根据是否存在必要的数据,在Browserrouter中进行重定向,如果不存在则重定向至仪表板 2.在Details componentWillMount()中,我设置了重定向
我是否真的需要检查每个数据使用情况(如果存在数据)?简单路由似乎很麻烦...
这是我的路由配置。第二个重定向不起作用。
{this.props.token?<Redirect to="/dashboard" />:<Redirect to="/login" />}
{this.props.selectedCow?<Redirect to="/dashboard"/>:null}
<Switch>
<Route path="/login" component={Login} />
<Route path="/details" component={CowDetails} />
<Route path="/dashboard" exact component={Dashboard} />
</Switch>
错误:未定义数据(在重定向之前呈现了CowDetails,并且缺少上下文)
答案 0 :(得分:0)
我以错误的方式使用了重定向。按照文档中的说明,它实际上无需渲染组件即可工作。
https://reacttraining.com/react-router/web/api/Redirect
对我来说是
<Route exact path="/details" render={() => (
this.props.selectedCow ? (
{CowDetails}
) : (
<Redirect to="/dashboard"/>
)
)}/>