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

为什么“历史”类型错误?提示:“{}”类型中缺少属性“历史记录”。我应该在index.tsx中传递什么参数?

谢谢!

最佳答案

如果您希望AppRouteComponentProps接收所有MemoryRouter(包括历史对象),则需要通过一条路线调用App,如下所示:

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

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

关于reactjs - react 路由器: 'history' is missing in type,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52531030/

10-09 20:07
查看更多