收藏
回答

skyline+ts+worklet+组件化页面=无法正常渲染?

初始化代码如下

手势响应函数如下

页面代码如下

拖动运行的结果如下

不知道为何会如此。

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

2 个回答

  • Demons
    Demons
    2023-12-26

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2023-12-26
    有用
    回复
  • 带妹狂熊
    带妹狂熊
    2023-12-26

    找到问题所在了:别直接复制官方文档内的代码,会变得不幸。

    其一,官方的typings内似乎还没有囊括进skyline的worklet的所有内容,这导致微信开发工具会提示很多类型检查问题,但还能用,只是看起来有那么亿点点烦人;

    其二,worklet函数的官方文档虽然写得七零八落,但好歹道理讲清楚了;可手势系统的文档内容更是难堪,直接导致我套用文档内代码无法运行,而无法运行的原因是官方将“现在”不存在的属性放进了代码中——诸如此类的问题在文档里比比皆是;

    其三,贴一下我成功运行的代码截图

    现在我的浅显理解是:通过shared定义的数据需要在JS线程进行读写,worklet函数最好只用来“监听手势”和“实现动画”;如果你使用shared定义了一个数据A,并且将它的值用在了worklet动画中,那么当你需要修改A的数值时,请wx.runOnJS(this.函数B)(需要传入函数B的参数);另外请注意,官方文档中存在很多“简写”,直接就是在文章某处凭空出现了一个函数或者对象,你需要自己想想这个东西究竟是不是需要自己先定义出来才用的。

    2023-12-26
    有用 1
    回复 4
    • 带妹狂熊
      带妹狂熊
      2023-12-26
      重要补丁:请在Page的onLoad(){}下使用,不要在Component下使用。
      2023-12-26
      回复
    • 带妹狂熊
      带妹狂熊
      2023-12-26回复带妹狂熊
      补丁的补丁:
      2023-12-26
      回复
    • 大森
      大森
      发表于小程序端
      03-13回复带妹狂熊

      为什么不能再component下使用呢

      03-13
      回复
    • Ryuukensai
      Ryuukensai
      12-11
      将const x=shared(0) 写在组件外面就行了,这样频繁地前后台进程通讯违背了worklite的本意
      12-11
      回复
登录 后发表内容