我意识到以前有人问过我这个问题,请容忍我,因为我还在学习这个问题。我想我已经尝试了所有的解决方案,但是没有运气。
问题是:当privaterout
重定向到/sign\u in
时,它没有呈现预期的组件(signinfo
)
我已经实现了一个privaterout
,如下所示;
privaterout.js
import React, { Component } from "react";
import PropTypes from "prop-types";
import { connect } from "react-redux";
import { Route, Redirect, withRouter } from "react-router-dom";
// Simplified and still can reproduce the issue;
class PrivateRoute extends Route {
render () {
return (<Redirect to="/sign_in" />);
}
}
PrivateRoute.propTypes = {
isAuthenticated: PropTypes.bool.isRequired,
};
const mapStateToProps = state => {
return {
isAuthenticated: !!state.user.token
};
};
export default withRouter(connect(mapStateToProps)(PrivateRoute));
这就是我使用它的地方;
index.js
<div className="content position-relative">
<div className="content-container font-nunito">
<Switch>
<Route path="/sign_in" component={SignInForm} />
<Route exact path="/" component={LandingPage} />
<PrivateRoute path="/trips" component={TestPage} />
</Switch>
</div>
</div>
在这个问题中要补充几点:
PrivateRoute
(我通过将更改为参数并将其更改为另一个路由来测试这一点,并且我在浏览器中看到URI的更改)。
- 如果我直接进入
/sign\u in
,它可以正常工作。唯一的问题是当
以下是我以前尝试过的尝试;
在myPrivateRoute
中使用带路由器的-基于此答案
我目前正在使用
react-router-dom@5.2.0
和反应@^16.2.0
。
请帮助,任何建议都很感激。如果我能提供更多细节,请告诉我。
编辑:我发现了真正的问题,似乎所有的路由都需要包装在BrowserRouter
中。这是我的最终解决方案;
<BrowserRouter>
<div className="content position-relative">
<div className="content-container font-nunito">
<Switch>
<Route path="/sign_in" component={SignInForm} />
<Route exact path="/" component={LandingPage} />
<PrivateRoute path="/trips" component={TestPage} />
</Switch>
</div>
</div>
</BrowserRouter>
旧:
我解决了它通过降级react-router-dom
从5.2.0
到4.3.1
。
这似乎解决了这个问题有点副作用这个问题
所以我最后的改变是;
package.json
- "react-router-dom": "^5.2.0",
+ "react-router-dom": "^4.3.1",
index.js(避免副作用)
<Switch>
<Route exact path="/" component={props => <LandingPage {...props} />} />
<Route path="/sign_in" component={props => <SignInForm {...props} />} />
<PrivateRoute path="/trips" component={props => <TestPage {...props} />} />
</Switch>
在标记为副本之前,请仔细阅读此内容,我向您保证,我已经阅读并尝试了每个人在stackoverflow和github上提出的关于此问题的所有建议。 我在我的应用程序中有一条路线,如下所示; route rendering呈现打开用户角色的组件,并基于该角色惰性加载正确的Routes组件,Routes组件呈现主页的开关。简化后,如下所示。 然后是路由组件 因此,问题是每当用户从/导航到/秒等...应用
react&React-Router的新功能。我正在使用react-router-4 我有以下组件-login-home-header-sidebar-content 登录组件没有标题或侧栏。 这就是我的路由 应用程序JS 然后在我的Home组件中,我有侧边栏和内容。 home.js呈现方法 侧边栏组件有一个链接,该链接具有“to”值“/home/dashboard”。 不幸的是,这并不奏效。单击
我有一个React应用程序,目前正在使用react-router@4.2.0,当URL更改时,我正在努力渲染特定的组件。 当我尝试访问时,CityList组件返回一个PropTypes错误。我已经尝试在LocationsWrapper中的Route组件中添加,然后再添加Main config,但是,这会影响其他路由,例如,使其变为空。 //浏览器路由器 //路由器配置-(路由) 我最好避免
我一直试图做一个简单的重定向到按钮点击的另一个组件,但由于某种原因,它不起作用。我想重定向到/dashboard并从登录显示AdminServices,如下所示: //索引。js //应用程序。js //登录。js //管理服务。js
大家好,我不知道发生了什么事。我有以下路线: 只有路径为“/”的路由和路径为“/patient/:id”的路由才有效,其他3条路由只是没有显示与路径对应的组件。 这就是我进入路线的方式。我有一个标题组件,上面有正确的链接。见下文 在头组件中,我从'react router dom'导入{Link};在我声明路由的文件中,我从'react router dom'导入{BrowserRouter,Ro
我有一个名为Dashboard的父组件,它被呈现为路由,如下所示: 我试着嘲笑每个人在嵌套路由上的解决方案,但我似乎无法解决我的问题。