小程序
小游戏
企业微信
微信支付
扫描小程序码分享
其实毫秒级的setData在某些情况下是不可避免的(尤其是采用了框架的情况)。
所以如果官方能够将setData的执行延迟16ms。比如如下代码:
let timer=null;
if(!!timer) clearTimeout(timer);
timer=setTimeout(function(){
setData();
},16);
那么就好多了。
嗯,写到这里我突然想改一下自己的框架……
不过如果官方能考虑一下的话,那就再好不过了。
14 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
内部讨论了下,我们计划在新版本上增加一个选项支持 setData 合并。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
目前 setData 只是在开发者工具上有警告,但没有对操作频繁做限制。
「状态不更新」可能是其他原因造成的,能给一个最小复现DEMO或留个微信号?
感谢反馈。如果仅仅是延迟16ms执行,这是没什么意义的。你的意思是将16ms内的setData调用合并吗?这样的话会和现在的setData执行效果有些许差异,所以不太可能这样变更setData的实现。建议你改一下自己的编码框架来实现。
@Special 感谢官方对于强需求的关注。我们也会一如既往的支持你们。
为什么不把 hidden 改为 wx:if ? 另外,如果有更多问题的话加我Q:416909382,方便交流。
我仅针对于组件做控制。不是针对所有的 setData 做控制。
因为我直接把组件对象传到 setData 里去。所以好做。
如果控制全页面,那可能就麻烦些了。
-----------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 class="connnect" hidden="{{(pageNumber==2)}}">
<image src="{{connectImageName+imageSuffix}}"></image>
<view class="circle1" style="visibility: {{circle1}};"></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>
<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>
</block>
</scroll-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>
js:
that.setData({
pageNumber:2
})
or
pageNumber:3
我这样控制的有时候会发生 状态不切换,你有好的意见么?
楼上哥们,你的修改思路是什么,比如在一个页面 一个 view里面有多重状态的切换
没有一个接口可以主动刷新一下视图层么
我的微信号 mobileliuyi @Special 官方 w
正在加载...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
内部讨论了下,我们计划在新版本上增加一个选项支持 setData 合并。
目前 setData 只是在开发者工具上有警告,但没有对操作频繁做限制。
「状态不更新」可能是其他原因造成的,能给一个最小复现DEMO或留个微信号?
感谢反馈。如果仅仅是延迟16ms执行,这是没什么意义的。你的意思是将16ms内的setData调用合并吗?这样的话会和现在的setData执行效果有些许差异,所以不太可能这样变更setData的实现。建议你改一下自己的编码框架来实现。
@Special 感谢官方对于强需求的关注。我们也会一如既往的支持你们。
为什么不把 hidden 改为 wx:if ? 另外,如果有更多问题的话加我Q:416909382,方便交流。
我仅针对于组件做控制。不是针对所有的 setData 做控制。
因为我直接把组件对象传到 setData 里去。所以好做。
如果控制全页面,那可能就麻烦些了。
-----------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
})
我这样控制的有时候会发生 状态不切换,你有好的意见么?
楼上哥们,你的修改思路是什么,比如在一个页面 一个 view里面有多重状态的切换
没有一个接口可以主动刷新一下视图层么
我的微信号 mobileliuyi @Special 官方 w