在使用React和TypeScript时,react-router BrowserRouter存在问题吗?

19 浏览
0 Comments

在使用React和TypeScript时,react-router BrowserRouter存在问题吗?

我浏览了几个类似的问题,但找不到能解决的方法。我尝试引入react-router的BrowserRouter,但它提示:

模块“'../node_modules/@types/react-router'”没有导出成员“BrowserRouter”。

根据这里的另一个类似问题,我使用npm install安装了@types/react和@types/react-router,但将它们保存为开发依赖项。它们已经在我的package.json文件中作为常规依赖项存在。在此之前,当我执行import React from 'react'时,它们会显示类似的错误。它会说找不到这些模块,路由器也是如此。然后当我执行安装操作时,这些错误消失了,但BrowserRouter开始显示这个错误。我也尝试过'react-router-dom'。

期望错误不再存在,能够正常导航。这是我第一次真正使用typescript。

0
0 Comments

问题原因:根据React Router的文档,BrowserRouter组件应该从'react-router-dom'中导入,而不是'react-router'。因此,如果使用了错误的导入语句,就会导致问题出现。

解决方法:确保从'react-router-dom'中导入BrowserRouter组件,而不是从'react-router'中导入。

以下是修复问题的示例代码:

import { BrowserRouter } from 'react-router-dom'
<BrowserRouter
  basename={optionalString}
  forceRefresh={optionalBool}
  getUserConfirmation={optionalFunc}
  keyLength={optionalNumber}
>
  <App/>
</BrowserRouter>

根据Stack Overflow的回答,react-router包含了react-router-dom和react-router-native之间的所有通用组件。如果在web上开发,应该使用react-router-dom,因为它还导出了你需要的通用组件。如果在使用React Native,应该使用react-router-native。所以,通常情况下不需要直接从react-router中导入任何组件。

希望这能解决你的问题,因为我之前使用了错误的导入语句,所以感到非常困惑。

0
0 Comments

问题出现的原因是用户安装了错误的包(react-router而不是react-router-dom),解决方法是安装正确的包(react-router-dom)。

0