У меня есть следующий код:
function PrivateRoute({ component: Component, auth, ...rest }) {
return (
<Route
{...rest}
render={props =>
auth === true ? (
<Component {...props} />
) : (
<Redirect to={{ pathname: '/login', state: { from: props.location } }} />
)
}
/>
);
}
function PublicRoute({ component: Component, auth, ...rest }) {
return <Route {...rest} render={props => (auth === false ? <Component {...props} /> : <Redirect to="/dashboard" />)} />;
}
export default () => (
<BrowserRouter>
<Switch>
<PublicRoute auth={true} path="/login" exact component={Login} />
<PrivateRoute auth={true} path="/news" exact component={News} />
<PrivateRoute auth={false} path="/blogs" exact component={Blog} />
<Route render={() => <h3>No Match</h3>} />
</Switch>
</BrowserRouter>
);
Я хочу добавить это ниже для отслеживания аутентифицированного реквизита:
function mapStateToProps(state) {
return {
auth: state.authenticated
};
}
function mapDispatchToProps(dispatch) {
return bindActionCreators({}, dispatch);
}
export default connect(mapStateToProps, mapDispatchToProps)(?);
Однако я не уверен, какдобавьте его в функциональный код.Нужно ли преобразовывать раздел экспорта по умолчанию в класс?