gloriasoft / veaury

Use React in Vue3 and Vue3 in React, And as perfect as possible!
MIT License
1.27k stars 81 forks source link

[ReactInVue] TypeError: Cannot read properties of undefined (reading 'unmount') #125

Open baijunjie opened 4 months ago

baijunjie commented 4 months ago

这个问题触发条件比较苛刻,我不太确定是否是 Veaury 的问题,但是错误是从 Veaury 中报出来的

image

重现需要满足三个条件:

1) 使用 Tabs 的路由模式,并且开启vue的过渡动画

image

2) tab子页面中使用一个被 veaury 转换过的 React组件,并且绑定一个 ref\ 变量来控制组件的显示

image

3)让这个组件默认显示,再异步更改布尔值,让其不显示,此时就会报错,并且一旦报错,Tabs 就坏掉了,无法再进行切换。

以下是demo代码的仓库 https://github.com/baijunjie/veaury-issue-demo

baijunjie commented 4 months ago

关于最后一步,异步更改布尔值,我发现如果异步请求在画面 onMounted 之前响应就会报错,如果在 画面 onMounted 之后响应,就没问题。

baijunjie commented 4 months ago

关于最后一步,异步更改布尔值,我发现如果异步请求在画面 onMounted 之前响应就会报错,如果在 画面 onMounted 之后响应,就没问题。

由于demo代码比较简单,看上去只要确保异步处理在 onMounted 之后完成就不会有问题,但是在我的实际项目中,由于环境更加复杂,并且嵌套组件比较多,即使在 onMounted 之后完成异步处理一样会报这个错误,这个case我目前无法通过简单的demo复现,不过我觉得问题应该是一样的。