相关平台
微信小程序
复现仓库
https://github.com/taroify/taro3314-ote
小程序基础库: 2.21.0
使用框架: React
复现步骤
Taro 在微信小程序中 onTransitionEnd 嵌套时存在不触发的问题
export default function Index() {
const [offset, setOffset] = useState(20)
return (
<View className='index' onTransitionEnd={() => console.log("index ote")}>
<View
style={{
transform: `translate3d(0, ${offset}px, 0)`,
transition: "transform 100ms",
}}
onClick={() => {
console.log("onClick offset")
setOffset(offset === 20 ? 30 : 20)
}}
onTransitionEnd={() => console.log("ote")}
>
点击一下
</View>
</View>
)
}
在 weapp 上的效果
在 h5 上的效果
期望结果
与 h5 的效果一致
实际结果
不与 h5 的效果一致
环境信息
� Taro v3.3.14
Taro CLI 3.3.14 environment info:
System:
OS: Windows 10
Binaries:
Node: 14.17.1 - C:\Programs\nodejs\node-v14.17.1-win-x64\node.EXE
Yarn: 1.22.11 - C:\Programs\nodejs\node\yarn.CMD
npm: 6.14.13 - C:\Programs\nodejs\node-v14.17.1-win-x64\npm.CMD
6条答案
按热度按时间slsn1g291#
@tgioer 使用原生代码测试了一下,
bindtransitionend
并不像文档说的一样可以冒泡:验证后发现
bindtransitionend
并不能冒泡,从而导致了这个问题。可以把
transitionend
从允许冒泡的事件列表中删除:taro/packages/taro-runtime/src/constants/events.ts
Line 14 in 48b37e3
| | 'transitionend', |
但受限于小程序底层,最终只能触发
console.log("ote")
,并不能和 H5 的表现保持一致axr492tv2#
https://developers.weixin.qq.com/community/develop/doc/0002e0ddb90fe07f6c1db535b56400?fromCreate=0
jutyujz03#
@Chen-jj 能打印 ote 就已经解决 50% 的问题了。最主要的是 Taro 在小程序上 连 ote 都不打印。
lo8azlld4#
@Chen-jj Taro 在小程序上 能触发内层的onTransitionEnd 打印 ote 就已经解决我描述问题了。
其实我遇到的问题就是在 onTransitionEnd 嵌套内,内层的 onTransitionEnd 不触发。
mum43rcc5#
@Chen-jj Taro 在小程序上 能触发内层的onTransitionEnd 打印 ote 就已经解决我描述问题了。
其实我遇到的问题就是在 onTransitionEnd 嵌套内,内层的 onTransitionEnd 不触发。
@Chen-jj 这应该是个 BUG
vtwuwzda6#
我也遇到了相同问题 求修复