来自 'react-router-dom' returns 意外对象的 useLocation

useLocation from 'react-router-dom' returns unexpected object

注意:我正在尝试使用 yarn 切换到即插即用。

useLocation 是从 'react-router-dom' 包中导入的。

以前(在 pnp 设置之前)以下行:

const location = useLocation()

总是返回具有下一个结构的位置对象(例如):

{pathname: '/', search: '', hash: '', state: null, key: 'default'}

使用当前的 yarn pnp 设置,在第一次渲染时构建渲染应用程序,有一个具有上述结构的位置对象,但是当尝试更改路径时,有一个具有下一个结构的对象(例如):

{action: 'PUSH', location: {pathname: '/new-path', search: '', hash: '', state: null, key: 'default'}}

为什么会这样,如何解决(总是有一个由相同结构的 useLocation 钩子返回的位置对象)?

已解决。

问题是 history 包升级到了 v.5.x。同时react-router设置为v.^5.2.1。因此,history v.5 与 react-router v.5 不兼容。

看起来 history v.5.x 是为了即将到来的 react-router v.6.

将历史记录降级到 v.4 解决了这个问题。

注意:该问题与切换到 yarn Plug'n'Play 无关。