打字稿不允许我在BrowserRouter中使用历史记录

时间:2019-08-21 15:06:36

标签: javascript reactjs typescript react-router

进行了React实验,我决定测试打字稿。

代码:

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

ReactDOM.render(
  <BrowserRouter history={history}>
    <App />
  </BrowserRouter>,
  document.getElementById('root')
)

history.js:

import { createBrowserHistory } from 'history'

export default createBrowserHistory()

错误:

  

键入'{children:Element;历史:历史; }'不可分配   键入'IntrinsicAttributes&IntrinsicClassAttributes   &Readonly&Readonly <{孩子们?:ReactNode; }>'。   属性“ history”在类型“ IntrinsicAttributes和   IntrinsicClassAttributes和只读   &Readonly <{儿童?:ReactNode; }>'。ts(2322)

package.json:

@types/react-router-dom": "^4.3.4",
react-router-dom": "^5.0.1",

在没有打字稿的情况下做完全相同的事情,则代码起作用。 我不明白为什么会这样,有人有答案吗?

1 个答案:

答案 0 :(得分:2)

BrowserRouter不使用名为history的道具。参见此处:https://reacttraining.com/react-router/web/api/BrowserRouter。有一个Router通用的低层接口,它带有一个history道具,但是看起来BrowserRouter本身并不接受。因此,您可以考虑换用Router

有关更多信息,请参见此答案:https://stackoverflow.com/a/45849608/10326373

相关问题