收藏
回答

skyline渲染下,wxs响应事件参数中无法获取ComponentDescriptor 实例?

skyline中,打印 instance 为 undefined

小程序基础库 3.5.8 更新中第三条提到:更新 框架 glass-easel 组件框架支持 WXS 事件响应 

指的不是skyline 要支持wxs的意思吗?

// index.wxml
<wxs module="test" src="./test.wxs"></wxs>
<view change:prop="{{test.propObserver}}" prop="{{propValue}}" bindtouchmove="{{test.touchmove}}" class="movable"></view>
<slot
    name="btn"
    bind:longpress="{{dragToSort.longPress}}"
...
...
// index.wxs
module.exports = {
    touchmove: function(event, instance) {
        console.log('log event', JSON.stringify(event),instance)
    },
    propObserver: function(newValue, oldValue, ownerInstance, instance) {
        console.log('prop observer', newValue, oldValue)
    }
}

webview 模式下;页面初始化时 test.propObserver 函数 会执行

skyline 模式下;页面初始化时 test.propObserver 函数 不会执行

why?为啥会有这样的差异


回答关注问题邀请回答
收藏

2 个回答

  • 小程序技术专员-SgLy
    小程序技术专员-SgLy
    09-26

    感谢反馈,是在开发者工具上出现的吗?工具不太行的话可以也试下预览到手机看看

    09-26
    有用
    回复 5
    • 星星
      星星
      09-26
      在手机上似乎渲染降级了。配置的是skyline渲染,在开发者工具里当前渲染模式显示的也是skyline,手机预览却变成了 webview
      09-26
      回复
    • 小程序技术专员-SgLy
      小程序技术专员-SgLy
      09-26回复星星
      手机上可以 SwitchRender 切到 skyline 看看?或者 wx.getSkylineInfo 看看降级原因;工具上的 wxs 支持应该要更新一下工具,我们处理下
      09-26
      回复
    • 星星
      星星
      09-26回复小程序技术专员-SgLy
      代码片段:https://developers.weixin.qq.com/s/V2LaFum370Ur    试了手机预览 skyline, wxs响应事件有问题,至少是和webview不兼容的,在社区找了一段 使用wxs响应事件的 列表拖拽排序demo, demo在webview下功能正常,demo在skyline下 报错:
      09-26
      回复
    • 星星
      星星
      09-26回复星星
      Cannot read properties of undefined (reading
      component')
      09-26
      回复
    • 小程序技术专员-SgLy
      小程序技术专员-SgLy
      09-26回复星星
      确实有问题,我修一下…
      09-26
      回复
  • 临·渊
    临·渊
    10-11

    用wx.worklet解君忧虑

    skyline模式下对wxs的支持并不友好

    wx.worklet 参考文档

    https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/skyline/worklet.html

    手势系统:

    https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/skyline/gesture.html

    10-11
    有用
    回复 4
    • 星星
      星星
      10-11
      请问 “列表拖拽排序” 功能咋 使用worklet 实现。可以给个思路吗? 怎么给任意列表元素设置样式 ,wxs 结合组件提供了丰富的api(社区也有开源组件) worklet 不知道怎么实现。
      10-11
      回复
    • 夏味
      夏味
      10-12
      worklet 也有 bug,无法处理 wx:for 的情况,会直接把微信闪退了
      10-12
      回复
    • 夏味
      夏味
      10-12回复星星
      不可能,现在列表无法用 worklet,详情见:
      [skyline] worklet 测量列表元素,微信、开发工具直接崩溃
      https://github.com/xiaweiss/miniprogram-bug-report/issues/240
      10-12
      回复
    • 星星
      星星
      10-14回复夏味
      这样的话,还是要等官方修复wxs在skyline的支持,才能实现“列表拖拽排序”了,我也感觉使用只用 worklet 不行,它只能被动监听数据变化后修改 预设的节点,不能支持动态。
      10-14
      回复
登录 后发表内容