Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用React路由器4的条件重定向_Reactjs_React Router - Fatal编程技术网

Reactjs 使用React路由器4的条件重定向

Reactjs 使用React路由器4的条件重定向,reactjs,react-router,Reactjs,React Router,在我的React应用程序中,我有时需要执行条件重定向 例如,我将用户发送到登录页,根据用户单击的按钮,我在sessionStorage中存储一个值,并登录用户,该用户会自动将用户带到主屏幕 这就是我想要做条件重定向的地方。例如,如果我在sessionStorage中存储的值是“basketball”,我想将用户重定向到basketball新闻页面。如果没有存储任何值,我会将用户留在主屏幕上 我可以用window.location.replace处理这个问题,但这会导致页面回发。我宁愿通过加载适当

在我的React应用程序中,我有时需要执行条件重定向

例如,我将用户发送到登录页,根据用户单击的按钮,我在sessionStorage中存储一个值,并登录用户,该用户会自动将用户带到主屏幕

这就是我想要做条件重定向的地方。例如,如果我在sessionStorage中存储的值是“basketball”,我想将用户重定向到basketball新闻页面。如果没有存储任何值,我会将用户留在主屏幕上

我可以用window.location.replace处理这个问题,但这会导致页面回发。我宁愿通过加载适当的组件来处理这个重定向,而不是执行页面回发

我可以用React Router 4执行此操作吗?

您可以使用该组件并将其包装在条件中:

//...
render() {
    const isBasketBall = sessionStorage.get('something') === 'basketball';
    return (
        {isBasketBall && <Redirect to="/basketball-news" />}
        {!isBasketBall && <Redirect to="/home" />}
    );
}
//...
“正式文档”具有身份验证工作流。

您可以使用该组件并将其包装在条件中:

//...
render() {
    const isBasketBall = sessionStorage.get('something') === 'basketball';
    return (
        {isBasketBall && <Redirect to="/basketball-news" />}
        {!isBasketBall && <Redirect to="/home" />}
    );
}
//...

官方文档具有身份验证工作流。

您也可以执行类似操作,而不是重定向:

{ isBasketBall && this.props.history.push("/basketball-news") }

您也可以这样做,而不是重定向:

{ isBasketBall && this.props.history.push("/basketball-news") }

是的…这是到文档的链接…然后这只是一个条件呈现的问题如果条件{}else{etc…是的…这是到文档的链接…然后这只是一个条件呈现的问题如果条件{}else{etc…请添加一些注释。请添加一些注释。