收藏
回答

建议官方将setData延迟16ms执行

其实毫秒级的setData在某些情况下是不可避免的(尤其是采用了框架的情况)。

所以如果官方能够将setData的执行延迟16ms。比如如下代码:


let timer=null;

if(!!timer) clearTimeout(timer);

timer=setTimeout(function(){

    setData();

},16);


那么就好多了。

嗯,写到这里我突然想改一下自己的框架……

不过如果官方能考虑一下的话,那就再好不过了。

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

14 个回答

  • Special
    Special
    2017-08-04

    内部讨论了下,我们计划在新版本上增加一个选项支持 setData 合并。

    2017-08-04
    有用
    回复
  • Special
    Special
    2017-08-03

    目前 setData 只是在开发者工具上有警告,但没有对操作频繁做限制。

    「状态不更新」可能是其他原因造成的,能给一个最小复现DEMO或留个微信号?

    2017-08-03
    有用
    回复
  • LastLeaf
    LastLeaf
    2017-08-03

    感谢反馈。如果仅仅是延迟16ms执行,这是没什么意义的。你的意思是将16ms内的setData调用合并吗?这样的话会和现在的setData执行效果有些许差异,所以不太可能这样变更setData的实现。建议你改一下自己的编码框架来实现。

    2017-08-03
    有用
    回复
  • 女娲的小泥人
    女娲的小泥人
    2017-08-09

    @Special  感谢官方对于强需求的关注。我们也会一如既往的支持你们。

    2017-08-09
    有用 1
    回复
  • 女娲的小泥人
    女娲的小泥人
    2017-08-03

    为什么不把 hidden 改为 wx:if ? 另外,如果有更多问题的话加我Q:416909382,方便交流。

    2017-08-03
    有用 1
    回复
  • 女娲的小泥人
    女娲的小泥人
    2017-08-03

    我仅针对于组件做控制。不是针对所有的 setData 做控制。

    因为我直接把组件对象传到 setData 里去。所以好做。

    如果控制全页面,那可能就麻烦些了。

    2017-08-03
    有用 1
    回复
  • 吉吉
    吉吉
    2017-08-03

    -----------wxml-----------

    <!--蓝牙未开启-->

    <view class="measure" style="width:750rpx;height:{{systemInfo.windowHeight}}px;background-color:{{bgColor}}" hidden="{{!(pageNumber==1)}}">

      <image class="measureImage" src="../../img/bluetooth_ball{{imageSuffix}}"></image>

      <text class="measureText">先打开"手机设置",开启"蓝牙"后即可一键测量</text>

    </view>

    <!--设备扫描中-->

    <view class="measure" style="width:750rpx;height:{{systemInfo.windowHeight}}px;" hidden="{{!(pageNumber==2 || pageNumber==3)}}">

      <view animation="{{animationData}}" class="measureImage1">

      <!-- 扫描 -->

        <view class="scan" hidden="{{(pageNumber==3)}}">

          <image src="{{scanImageName+imageSuffix}}"></image>

        </view>

        <!-- 连接 -->

        <view class="connnect" hidden="{{(pageNumber==2)}}">

          <image src="{{connectImageName+imageSuffix}}"></image>

        </view>

        <view class="circle1" style="visibility: {{circle1}};"></view>

      </view>

      <!--{{bpTitleH+bpTitleH}}-->

      <view class="bpDevice" animation="{{animationData1}}" style="height:{{bpTitleH+bpDeviceViewH}}px;top: {{bpDeviceTop}}px;" hidden="{{discoveryArray.length==0}}">

        <view class="bpTitle" style="  height: {{bpTitleH}}px;line-height: {{bpTitleH}}px;">选择你要连接的血压计

          <view hover-class="hover" class="refresh" bindtap="refresh">刷新</view>

        </view>

        <scroll-view class="device" scroll-y style="height:{{scrollH}}px;">

          <block wx:for="{{discoveryArray}}">

            <view class="bp" id="{{index}}" data-deviceinfo="{{item}}" bindtap="handDeviceTap" style="height:{{bpDeviceViewH}}px;">

              <image class="bpImage" src="../../img/bp3l{{imageSuffix}}"></image>

              <view class="deviceId" style="height: {{bpDeviceViewH}}px;line-height: {{bpDeviceViewH}}px;">{{"底部编码" + item.mac}}</view>

            </view>

          </block>

        </scroll-view>

      </view>

    </view>

    <!--点击测量-->

    <view class="measure" style="width:750rpx;height:{{systemInfo.windowHeight}}px;" hidden="{{!(pageNumber==4)}}">

      <image class="measureImage" bindtap="handMeasureTap" src="../../img/start_ball{{imageSuffix}}"></image>

    </view>


    js:

    that.setData({

                  pageNumber:2

                })

    or

    that.setData({

                  pageNumber:3

                })


    我这样控制的有时候会发生 状态不切换,你有好的意见么?

    2017-08-03
    有用
    回复
  • 吉吉
    吉吉
    2017-08-03

    楼上哥们,你的修改思路是什么,比如在一个页面 一个 view里面有多重状态的切换

    2017-08-03
    有用
    回复
  • 吉吉
    吉吉
    2017-08-03

    没有一个接口可以主动刷新一下视图层么

    2017-08-03
    有用
    回复
  • 吉吉
    吉吉
    2017-08-03

    我的微信号 mobileliuyi @Special 官方       w

    2017-08-03
    有用
    回复

正在加载...

登录 后发表内容