Реагируйте: реквизит истории не доступен в частном маршруте - PullRequest
0 голосов
/ 04 декабря 2018

Я использую React 16, React-router-dom 4 и Mobx в моем приложении.

У меня есть этот код для частного маршрута:

export default (props) => {

    console.log('props from private',props)//Here i can see that the component doesn't contain the "history" prop.

    const Component = props.component;  

    const match = props.computedMatch
    if (isValidated()) {
        return (
            <div>
                <div><Component  {...props} match={match} /></div>
            </div>
        )
    } else {
        return <Redirect to="/login" />
    }

};

Это маршрутизацияsetup:

export const history = createHistory();

const AppRouter = () => (
  <Router history={history}>
    <Switch>
      <PrivateRoute  path="/" component={Chat} exact={true} />
      <Route path="/login" component={Login} />
    </Switch>
  </Router>
);

По какой-то причине исторический реквизит просто не существует в приватном маршруте, поэтому я не могу использовать функцию this.props.history.push для программного перенаправления.Однако реквизит переходит на «нормальный» маршрут.

Что не так с моим кодом?

1 Ответ

0 голосов
/ 04 декабря 2018

Используется ниже:

import {withRouter} from 'react-router-dom';

Компонент обтекания с withRouter.

withRouter(component_name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...