reactjs - react 路由器 : 'history' is missing in type

标签 reactjs typescript react-router-dom

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 中传递哪些参数?

谢谢!

最佳答案

如果你想要App接收所有 RouteComponentProps (包括历史对象)来自 MemoryRouter , 那么你需要调用 App通过一条路线,像这样:

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

然后你可以替换AppPropsRouteComponentProps<{}>App 的声明中.

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

相关文章:

javascript - React Router 子路由未显示

reactjs - 如何使用React Router忽略ErrorBoundary的特定错误?

reactjs - 错误: An immer producer returned a new value *and* modified its draft.返回一个新值*或*修改草稿

javascript - 无法编译 react 应用程序,因为它说 "Module not found"

reactjs - 使用 redux-form 验证动态生成的表单并重新验证?

javascript - 如何使用typescript读取json数据?

typescript - 为外部 js nodejs 包编写 typescript 声明文件,没有类型信息

javascript - React js - 使按钮链接到不同的应用程序

javascript - 如何在深层嵌套对象中保存状态?

reactjs - MUI 输入字段只接受字母、数字和破折号?