收藏
回答

Skyline手势系统如何根据data里面值让手势不生效?

<scroll-view class="scroll-area" type="custom" using-sticky scroll-y>
  <!-- -->
  <list-view>
    <block wx:for="{{list}}" wx:key="index">
      <horizontal-drag-gesture-handler worklet:ongesture="handleGesture" data-index="{{index}}">
        <view>
          <!-- -->
        </view>
      </horizontal-drag-gesture-handler>
    </block>
  </list-view>
</scroll-view>


handleGesture(event) {
  'worklet';
  if (this.data.flag) {
    return false;
  }
  // ...
 }


代码大概如上,我在`handleGesture`中处理手势操作,当flag为true的时候,就不处理手势了。

目前发现以上代码不行,handleGesture里面好像会无视flag的值,继续执行

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

1 个回答

  • 神经蛙
    神经蛙
    05-06

    已解决,使用共享值shared才行,否则读取到的this.data里面值始终是初始值。

    onLoad() {
      this.flag = shared(false);
    },
    handleGesture(event) {
      'worklet';
      if (this.flag.value) {
        return false;
      }
      // ...
    }
    
    
    05-06
    有用 1
    回复
登录 后发表内容