<script>
const {shared} = wx.worklet;
const publicVal = shared(0);
export default {
data() {
return {
msg: 'comb',
instanceVal: shared(1),
};
},
methods: {
handlePan(evt) {
'worklet';
console.log('handlePan->', publicVal.value); // 可以访问
console.log('handlePan->', this.msg); // ui线程内,无法访问!!
console.log('handlePan->', this.instanceVal.value); // ui线程内,无法访问!!
},
}
}
</script>
<template>
<div class="test">
<pan-gesture-handler worklet:ongesture="handlePan">
<div class="drag">dragb</div>
</pan-gesture-handler>
</div>
</template> - 发布:2025-10-24 11:43
- 更新:2025-10-24 11:45
- 阅读:25
产品分类: uniapp/小程序/微信
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: macOS 15.6
第三方开发者工具版本号: Stable 1.06.2504040
基础库版本号: 3.8.10
项目创建方式: CLI
CLI版本号: 3.0.0-4070620250821001
示例代码:
操作步骤:
将代码保存为组件文件,运行到微信小程序平台,微信开发者工具需要开启“详情”-“本地设置”-“开启skyline渲染调试”。
将代码保存为组件文件,运行到微信小程序平台,微信开发者工具需要开启“详情”-“本地设置”-“开启skyline渲染调试”。
预期结果:
handlePan()正常打印出所有值.
handlePan()正常打印出所有值.
实际结果:
访问组件内部状态报错
TypeError: Cannot read property 'value' of undefined
访问组件内部状态报错
TypeError: Cannot read property 'value' of undefined
bug描述:
微信平台什么时候能支持一下skyline的worklet啊?目前遇到问题:使用组合式api,手势组件(如<pan-gesture-handler>)相应函数无法访问,因为uniapp会直接将其定义为变量,然后变量再映射函数。如果使用选项式api,倒是可以访问,但是因为响应事件的workleth运行在ui线程,无法访问到vue组件内部data,如果在组件外部使用wx.worklet.shared创建共享变量,那组件重复调用又会数据冲突。有没有什么解决方案呢。
demo在附件里,cli安装方式。
解压后npm install
然后运行微信小程序项目:npm run dev:mp-weixin
微信开发者工具打开后记得开启skyline渲染调试
luweiweiss (作者)
demo更新上去了,在文末
2025-10-24 15:15
luweiweiss (作者)
demo中拖动滑块,组合式api组件中无法按照预期的执行相应函数,选项式api可以执行,但是无法访问组件data
2025-10-24 15:16
DCloud_UNI_JBB
回复 luweiweiss: 组合式目前不支持
2025-10-24 15:35
DCloud_UNI_JBB
回复 DCloud_UNI_JBB: 回复 luweiweiss: 原生微信小程序也不支持访问data中的数据
2025-10-24 15:37