进行了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",
在没有打字稿的情况下做完全相同的事情,则代码起作用。 我不明白为什么会这样,有人有答案吗?
答案 0 :(得分:2)
BrowserRouter
不使用名为history
的道具。参见此处:https://reacttraining.com/react-router/web/api/BrowserRouter。有一个Router
通用的低层接口,它带有一个history
道具,但是看起来BrowserRouter
本身并不接受。因此,您可以考虑换用Router
。
有关更多信息,请参见此答案:https://stackoverflow.com/a/45849608/10326373