Как заставить <Route>компонент наблюдать состояние входа в систему из магазина? - PullRequest
0 голосов
/ 06 января 2019

Как сделать, чтобы компонент PrivateRoute более высокого порядка наблюдал за моим состоянием loggedIn из хранилища mobx и отображал компонент Redirect, если статус loggedIn изменяется на false?

Я использую response-router-dom для управления маршрутизацией моих приложений. Чтобы иметь частные маршруты, к которым могут обращаться только зарегистрированные пользователи, я обернул стандартный компонент Route в компонент PrivateRoute без сохранения состояния, который проверяет переменную состояния mobx store loggedIn в своем методе рендеринга. В зависимости от этого статуса loggedIn (который был сделан наблюдаемым) частный маршрут рендерит либо компонент Redirect, либо компонент, который будет отображаться. Теперь я хотел сделать этот компонент наблюдателем состояния loggedIn магазинов и включить его в функцию наблюдателя mobx-реагирует.

Мой компонент PrivateRoute

export const PrivateRoute = observer(({ store, component: Component, ...rest }) => (
    <Route
        {...rest}
        render={props =>
            store.status ? <Component {...props} /> : <Redirect to="/login" />
        }
    />
));

Чего я хочу добиться, так это немедленного перенаправления пользователя на страницу входа в систему при изменении состояния на ложное, но как я пытался это сделать, теперь оно работает.

...