示例https://reacttraining.com/react-router/web/example/auth-workflow 中提供的 PrivateRoute 在与 Redux 连接后不起作用。
我的 PrivateRoute 看起来与原始版本几乎相同,但仅连接到 Redux并在原始示例中使用它而不是 fakeAuth。
const PrivateRoute = ({ component: Component, auth, ...rest }) => (
<Route
{...rest}
render={props =>
auth.isAuthenticated
? <Component {...props} />
: <Redirect to={{ pathname: "/login" }} />}
/>
);
PrivateRoute.propTypes = {
auth: PropTypes.object.isRequired,
component: PropTypes.func.isRequired
}
const mapStateToProps = (state, ownProps) => {
return {
auth: state.auth
}
};
export default connect(mapStateToProps)(PrivateRoute);
用法和结果:-
- 不工作但希望和期望工作
<PrivateRoute path="/member" component={MemberPage} />
- 工作但不希望这样使用
<PrivateRoute path="/member" component={MemberPage} auth={auth} />
- 在职的。只是为了工作,但根本不想使用。从这一点上的理解是,如果您将原始 PrivateRoute 连接到 Redux,您需要传递一些额外的props(任何props)以使 PrivateRoute 工作,否则它不起作用。任何人,请对这种行为给出一些提示。这是我的主要问题
<PrivateRoute path="/member" component={MemberPage} anyprop={{a:1}} />