开发者问题收集

react-router:类型中缺少“history”

2018-09-27
7374

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();

为什么history类型错误?提示:类型'{}'中缺少属性'history'。在index.tsx中应该传递什么参数?

谢谢!

1个回答

如果您希望 AppMemoryRouter 接收所有 RouteComponentProps (包括 history 对象),那么您需要通过路由调用 App ,如下所示:

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

然后您可以在 App 的声明中将 AppProps 替换为 RouteComponentProps<{}>

Matt McCutchen
2018-09-28