реакции-маршрутизатор: «история» отсутствует в типе - PullRequest
0 голосов
/ 27 сентября 2018

некоторый код App.tsx:

interface AppProps{
  history: any
}

export default class App extends React.Component<AppProps,...> {

  public state = {
    target: this.props.history.push('/')
  };

  private route() {
    if (!session.isLogin) {
        this.setState({ target: this.props.history.push('/') });
        return
    } else {
        this.setState({ target: this.props.history.push('/root') })
    }
  }
  ...
  public render() {
    return this.state.target
  }
}

некоторый код index.tsx

ReactDOM.render(
  <MemoryRouter>
    <LocaleProvider locale={zhCn}>
        <App history={ ???? }/>
    </LocaleProvider>
  </MemoryRouter>,
  document.getElementById('root') as HTMLElement
);
registerServiceWorker();

Почему неправильный тип «истории»?tips : Свойство 'history' отсутствует в типе '{}'.Какие параметры я должен передать в index.tsx?

Спасибо!

1 Ответ

0 голосов
/ 28 сентября 2018

Если вы хотите, чтобы App получил все RouteComponentProps (включая объект истории) от MemoryRouter, вам нужно вызвать App по маршруту, например, так:

ReactDOM.render(
  <MemoryRouter>
    <LocaleProvider locale={zhCn}>
        <Route component={App}/>
    </LocaleProvider>
  </MemoryRouter>,
  document.getElementById('root') as HTMLElement
);

Затем вы можете заменить AppProps на RouteComponentProps<{}> в объявлении App.

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