PrivateRoute dostępny w przykładzie https://reacttraining.com/react-router/web/example/auth-workflow nie działa po połączeniu z Redux.React Router 4.x - PrivateRoute nie działa po podłączeniu do Redux
Moja prywatna kopia wygląda prawie tak samo jak oryginalna wersja, ale tylko jest połączona z Redux i użyła jej zamiast fakeAuth w oryginalnym przykładzie.
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);
Wykorzystanie i wynik: -
- nie działa ale pożądane & spodziewa pracować
<PrivateRoute path="/member" component={MemberPage} />
- działa, ale nie pożądane maszyn Lik e to
<PrivateRoute path="/member" component={MemberPage} auth={auth} />
- pracy. TYLKO do pracy, ale NIE pożądane w ogóle. Zrozumienie tego jest takie, że jeśli podłączysz oryginalny PrivateRoute do Redux, musisz przekazać dodatkowe rekwizyty (dowolny rekwizyt), aby PrivateRoute działał inaczej, to nie działa. Ktoś, proszę podać podpowiedź na temat tego zachowania. To jest moje główne pytanie
<PrivateRoute path="/member" component={MemberPage} anyprop={{a:1}} />
Dzięki @Tharaka dla twojej informacji. –
Czy możesz napisać mi działający przykład użycia PrivateRoute lub zmiany muszą być wykonane na PrivateRoute się –
Nie mogę wymyślić żadnego sposobu, aby PrivateRoute działało zgodnie z oczekiwaniami w twoim 1 użyciu. Moja sugestia jest taka, że wystarczy użyć 3, jeśli działa, dopóki nie naprawią tego problemu. Lub możesz przekazać 'params' do PrivateRoute w ten sposób. '<Ścieżka PrivateRoute ="/member "component = {MemberPage} params = {this.props.match.params} />' –