-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Teleport / Portal 支持? #11751
Comments
如果尝试更新teleport里面的dom,就会导致
我隐约记得前几个月测试的时候是ok的,不知道是vue更新了还是taro更新了,现在又不行了😭 |
问题在于小程序环境要实现跨页面的全局组件,这点还是不好实现,需要再想想 |
我觉得小程序没必要实现跨页面?Portal啥的只需要传当前页面的node ref就行了,毕竟小程序不会同时显示两个页面。 |
mark一下,Teleport这个希望能得到支持,目前弹窗太多了,嵌套弹窗之后各个端的fixed定位问题真的很让人头疼,如果能支持Teleport,然后把所有弹窗都变成平级应该就没这么多问题了 |
又或者是对弹窗的场景单独优化?部分支持teleport? |
我写了个demo,使用了 vue3 teleport,但仅限于在页面内使用,是否满足你们的诉求? |
- Teleport - https://vuejs.org/guide/built-ins/teleport.html - NervJS/taro#11751 (comment) - 节点 id 问题 - https://docs.taro.zone/docs/ref - NervJS/taro@2db9bdf#diff-d7ae218b39f54c0aed1ec3bd9d0a3e57347bf7df7583e0e354ba6d9630433acaR36-R43 - NervJS/taro#7317 (comment) - https://github.com/NervJS/taro/blob/v3.6.25/packages/taro-runtime/src/dom/node.ts#L23 - 获取页面根节点 - https://github.com/NervJS/taro/blob/v3.6.25/packages/taro-plugin-vue3/src/runtime/connect.ts#L88 - https://github.com/NervJS/taro/blob/v3.6.25/packages/taro-runtime/src/next-tick.ts#L21 - JSX - https://docs.taro.zone/docs/vue3#jsx - https://vuejs.org/api/general.html#function-signature - https://vuejs.org/guide/extras/render-function.html#typing-functional-components - CSS.escape - https://github.com/mathiasbynens/CSS.escape - bootstrap-vue/bootstrap-vue#5561 - facebook/react#28404 (comment)
这个特性解决了什么问题?
Vue 的
Teleport
和 React 的Portal
组件需求性挺强的,对于弹窗多的小程序很必要。本质上它们都是通过操作DOM API来实现 (比如 document.insertBefore), 现在的 Taro3 实现了类似的DOM API,应该已经可以实现这类功能了?
可以通过ref取到
TaroElement
, 然后传给Teleport
现在尝试了下会报这个错误:
这个 API 长什么样?
The text was updated successfully, but these errors were encountered: