react-activation icon indicating copy to clipboard operation
react-activation copied to clipboard

什么时候可以支持react19?

Open bitxx opened this issue 7 months ago • 4 comments

react19中,我用嵌套路由的时候,总报错:chunk-C37GKA54.mjs:188 Uncaught Error: useLoaderData must be used within a data router.

去掉keepalive的包裹就正常了

bitxx avatar Aug 03 '25 12:08 bitxx

+1

ssy-tom avatar Aug 04 '25 09:08 ssy-tom

理论上是支持 reac19 的,你的问题原因大概是<AliveScope> 节点需要确保放置在各类 Router 方案的根节点内

CJY0208 avatar Aug 04 '25 09:08 CJY0208

理论上是支持 reac19 的,你的问题原因大概是 节点需要确保放置在各类 Router 方案的根节点内

我原先在react18上一直正常运行,切成react19才异常的。

示例,大概结构如下:

<RouterProvider>
  <KeepAlive>
    <Test>
    </Test>
  </KeepAlive>
</RouterProvider>

<Test>节点中,调用了useLoaderData(); 在react18中,这一切都能正常运行;但在react19中,就报错; react19中,去掉<KeepAlive>,就不报错了。 我看文档也说了,某节点调用useLoaderData(),需要确保该节点在Router根结点内才能生效。 按你说的,如果我节点不是在Router根结点内,那去不去掉<KeepAlive>,都应该报错的。

bitxx avatar Aug 06 '25 13:08 bitxx

我也遇到报错了,加上<KeepAlive> 会提示Uncaught Error: useNavigate() may be used only in the context of a <Router> component. 后退到react18就好了

"react": "19.1.1", "react-router": "^7.6.3"

FrancisKaneY avatar Aug 07 '25 05:08 FrancisKaneY

react19可以用,调整自己的业务架构,确保useLoaderData()等方法,在KeepAlive之外使用,这样可以一劳永逸解决问题。

react18不报错可能是底层检查松的缘故。改了半天,终于能用React19了

bitxx avatar Dec 11 '25 03:12 bitxx