Typescript 不允许我在 BrowserRouter 中使用历史记录

Cod*_*tle 5 javascript typescript reactjs react-router

尝试使用反应,我决定测试打字稿。

代码:

import { BrowserRouter } from 'react-router-dom'
import history  from './utilities/history'

ReactDOM.render(
  <BrowserRouter history={history}>
    <App />
  </BrowserRouter>,
  document.getElementById('root')
)
Run Code Online (Sandbox Code Playgroud)

历史.js:

import { createBrowserHistory } from 'history'

export default createBrowserHistory()
Run Code Online (Sandbox Code Playgroud)

错误:

类型 '{ 子元素:元素;历史:历史;}' 不可分配给类型 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly & Readonly<{children?: ReactNode; }>'。类型“IntrinsicAttributes & IntrinsicClassAttributes & Readonly & Readonly<{children?: ReactNode;”上不存在属性“history” }>'.ts(2322)

包.json:

@types/react-router-dom": "^4.3.4",
react-router-dom": "^5.0.1",
Run Code Online (Sandbox Code Playgroud)

当没有打字稿做完全相同的事情时,代码就可以工作。我不明白为什么会发生这种情况,有人有答案吗?

Yon*_*bbs 5

BrowserRouter不接受名为 的道具history。请参阅此处: https: //reacttraining.com/react-router/web/api/BrowserRouter。有一个Router常见的低级接口,它有一个historyprop,但它看起来并不BrowserRouter接受它。所以你可以考虑换成使用Router.

有关更多信息,请参阅此答案:/sf/answers/3209472591/