- 【线上bug反馈】微信的搜索挂了,搜不到小程序
今天发现自己的小程序数据量有明显下降,尝试着搜了一下,发现搜不到。后来再尝试搜别的小程序,也搜不到。比如搜微博、美团等等 [图片]
2023-03-31 - 【模板语法bug】增量setData,模板语法不生效
- 当前 Bug 的表现(可附上截图) 增量setData,如 setData({ [`list[0]`]: 1, }) 如果模板语法中有这样的写法: <view class="a {{list.length > 0 ? 'b' : ''}}"> 则class b则不会生效,即setData之后list的长度变了,但是view没有动态增加一个class。 详细说明见代码片段,开发者工具、华为荣耀10微信7.0.4均复现。这个问题应该是新近出现的,这种写法很常见,之前并没有遇到。 - 预期表现 一切正常
2019-05-28 - 【wxml bug】模板语法bug反馈
- 当前 Bug 的表现(可附上截图) 使用自定义组件的时候,有时候需要将一个JS对象作为参数传递,会出现这样的使用方法: 第一种写法: <comp1 obj="{{{a: 1, b: 2}}}"></comp1> 最外的两层花括号表明这是一个表达式,表达式的值是{a: 1, b: 2},但是这种写法在开发者工具上直接报错了。 第二种写法: <comp1 obj="{{a: 1, b: 2}}"></comp1> 这是参考template的写法,只有两层花括号,但是也报错了。 第三种写法: <comp1 obj="{{ {a: 1, b: 2} }}"></comp1> 这时候就能正常显示了,但这个和第一种写法有什么区别?我不认为加减一个空格会影响到表达式的表现才对。 同时,文档里template有一种写法: [代码]<template is="objectCombine" data="{{...obj1, ...obj2, e: 5}}"></template>[代码][代码][代码] [代码]<template is="objectCombine" data="{{foo, bar}}"></template>[代码]这种写法我认为是不是也有问题?两个花括号表示这是一个表达式的话,js里没有这样的表达式吧?...obj1, ...obj2, e: 5?foo, bar?这能是一个对象吗 文档里还有另一种写法: [代码]<view wx:for="{{[zero, 1, 2, 3, 4]}}">{{item}}</view>[代码]这个为什么就能正常了?这和第一种写法有什么区别?能在模板语法里构造数组,不能构造对象? - 预期表现 这些表现我认为是冲突的,没有统一性。麻烦解答一下上面的问题哈
2019-05-16 - 【框架】列表的wx:key设计的是不是有问题?
文档中关于wx:key的描述如下: [代码]wx:key[代码] 的值以两种形式提供 字符串,代表在 for 循环的 array 中 item 的某个 property,该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变。 保留关键字 [代码]*this[代码] 代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字 —————————————————————————————————————————————————— 之前没太注意这块,现在发现项目里很多地方都是这么写的: <view wx:for="{{ list }}" wx:key="{{ item.id }}">......</view> 是想将表达式{{ item.id }}的返回值作为唯一值 我的问题是,这种写法对么?列表元素可以成功复用么? 根据文档1,“代表在 for 循环的 array 中 item 的某个 property”。实际上,有没有可能把表达式{{ item.id }}的返回值当成了property,然后key用的是item[ property ],也就是 item[ item.id ] ?或者有没有可能最后key用的是item["{{ item.id }}"]?那应该都是undefined,为啥我的示例里都没有报错呢? 提供一个示例,https://developers.weixin.qq.com/s/5s3XdomT7w8T 这绝对不是一个少见的问题,我看社区里很多人都这么用了 ————————————————————————————————————————————————— 更新一下,加一个示例,这个示例的现象也不太正常:https://developers.weixin.qq.com/s/AytL4pmM7k8p ————————————————————————————————————————————————— 原来这个问题存在快1年了 https://developers.weixin.qq.com/community/develop/doc/000c2074590aa08e98372150c5b000?highLine=wx%253Akey 这篇文章的作者是严谨的,而回答全是瞎扯 https://developers.weixin.qq.com/community/develop/doc/000a82ab2d07682a699788d585bc00?highLine=wx%253Akey 这篇文章的作者遇到的现象是诡异的,而回答给他的解决方案,瞎扯 https://developers.weixin.qq.com/community/develop/doc/00062ec7eecea8f64427829ab5b400 这篇文章官方回答了,但是太言简意赅,导致底下的回答还是在瞎扯 https://developers.weixin.qq.com/community/develop/doc/000ee2aca04a102195278397e51c04 这篇文章,从头到位都是瞎扯 其实我上面的瞎扯都想用放屁来代替的,就这么个问题,磨磨唧唧弄了这么久,大部分人都还是在瞎搞。是当初设计的锅?还是文档没写清楚的锅?还是因为官方的不重视?还是社区质量太差? 即便严格按照文档的说法,我上面的两个示例还是解释不通的,哎。。。
2019-05-15 - 【吐槽】官方团队能不能走点心
wxs响应事件文档:https://developers.weixin.qq.com/miniprogram/dev/framework/view/interactive-animation.html?search-key=wxs 框架设计得有问题也就算了,只能打补丁我也接受。 文档写的粗糙也就算了,看个三五遍我也大概能看懂。 但连官方示例都跑不起来就不太合适了吧:https://developers.weixin.qq.com/s/ylShYBma7f5J 还有,好好看看开发者提的bug吧,好几个人都说遇到了,那就该是官方团队自己去复现去修复吧? 毕竟不是所有bug都能提供示例的,谁知道是哪块引起的诡异bug呢? 还有答应开发者的下个版本修复、下个版本修复,倒是修复啊 还有你们说的已修复,倒是真的修复了啊 做平台跟做内部业务是不一样的,而且还兼具着小程序领头羊的角色,麻烦认真点啊。。。 从小程序内测开始关注,从一开始的兴致勃勃,到现在觉得还不如当初兼容ie6的年头。。。 我真的是。。。 很绝望啊。。。
2019-05-09 - 【bug】iOS中input组件的focus事件触发慢了
- 需求的场景描述(希望解决的问题) 在iOS中,input组件的focus事件回调会在键盘呼起动画结束后触发。举个简单的例子 页面的wxml: [代码]<[代码][代码]input[代码] [代码]focus[代码][代码]=[代码][代码]"{{focus}}"[代码] [代码]bindfocus[代码][代码]=[代码][代码]"handleFocus" bindblur="handleBlur"[代码] [代码]/>[代码] <button bindtap="focus">focus input</button> <button>blur input</button> 页面js: [代码]Page({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]focus: false[代码][代码] [代码][代码]},[代码] [代码] focus() {[代码] [代码] this.setData({focus: true})[代码] [代码] },[代码] [代码] [代码][代码]handleFocus(){[代码][代码] console.log("handleFocus")[代码][代码] [代码][代码]},[代码] [代码] [代码][代码] [代码][代码]handleBlur(){[代码] [代码] console.log("handleBlur")[代码][代码] [代码][代码]},[代码] [代码]})[代码] 1、点击“focus input”按钮,focus变为true,开始拉起键盘,这个过程是有动画的。 2、直观上,键盘呼起动画持续时长大概是500ms ~ 1000ms,动画结束之后,handleFocus回调会被执行,打印handleFocus。 3、如果在键盘呼起的过程中快速点击“blur input”按钮,会立即触发blur事件。由于focus事件是在键盘动画结束之后触发的,handleBlur的执行时机反而在handleFocus之前了。 这个问题很严重,事件回调的顺序串了,很多逻辑就乱了。 不提供实例了,如果这个说法(在iOS中,input组件的focus事件回调会在键盘呼起动画结束后触发)成立,应该就能说明问题了。
2019-04-29 - 【卡顿闪退】嵌套使用过多自定义组件会卡顿闪退?
- 需求的场景描述(希望解决的问题) 我们的小程序比较复杂,嵌套使用了很多自定义组件,自定义组件间传递的数据有些是较大的对象。现在发现性能很差,用户经常反馈卡顿闪退,做性能分析的时候提示过多地调用了setData,但其实我们的setData并不多,只是自定义组件层级多而已。 我理解是不是因为自定义组件的数据传递机制有点问题? 举个例子:页面A中使用了自定义组件C1,自定义组件C1中又使用了自定义组件C2 ...... 自定义组件的数据传递机制是不是这样的: 1、页面A通过调用setData,把A的数据stringify后传递给了页面A的wxml(从js线程 -> 渲染线程) 2、页面A的wxml发现使用了组件C1,于是把要传递给C1的数据parse之后传递给C1的js线程(从渲染线程 -> js线程) 3、组件C1的js接收到数据之后,需要把数据传递给组件C1的wxml,于是又stringify一次(从js线程 -> 渲染线程) 4、组件C1的wxml发现使用了组件C2,于是把要传递给C2的数据parse之后传递给C2的js线程(从渲染线程 -> js线程) 5、组件C2的js接收到数据之后,需要把数据传递给组件C2的wxml,于是又stringify一次(从js线程 -> 渲染线程) 如此类推。。。。。。 我的问题是: 1、我理解的数据传递过程对么,是这样实现的吗?(代码片段里做了个简单的验证,同一份数据传递之后确实不一样了) 2、如果1的假设是对的,那可不可以通过用app.globalData.xx之类的方式来做数据传递呢?要setData的数据放到app.globalData.xx里,然后在自定义组件中去监听app.globalData.xx的变化(js线程 -> js线程),是不是可以节省下一趟的stringify、parse的开销? 3、如果2的假设是对的,getApp的开销有多大,是不是可以忽略不计的? 4、如果上面的假设没错,那这是不是做性能优化的一个思路呢?
2019-03-28 - 【已解决】(new Date).format("yyyy-MM-dd") bug
- 当前 Bug 的表现(可附上截图) 收到一个告警: (new Date).format is not a function. (In '(new Date).format("yyyy-MM-dd")', '(new Date).format' is undefined);at api getStorage success callback function success@https://usr/app-service.js:6610:120https://lib/WAService.js:1:688144https://lib/WAService.js:1:101845g@https://lib/WAService.js:1:276224We@https://lib/WAService.js:1:276399https://lib/WAService.js:1:277851y@https://lib/WAService.js:1:1377https://lib/WAService.js:1:1121_@https://lib/WAService.js:1:1287invoke@https://lib/WAService.js:1:117378J@https://lib/WAService.js:1:270304https://lib/WAService.js:1:277832getStorage@https://lib/WAService.js:1:493764https://lib/WAService.js:1:495088https://lib/WAService.js:1:495489https://lib/WAService.js:1:322872https://lib/WAService.js:1:688330https://lib/WAService.js:1:688426https://lib/WAService.js:1:281765https://usr/app-service.js:6610:47require@https://lib/WAService.js:1:888690global code@https://usr/app-service.js:6611:17 查了查我们的代码里没有这样的写法,这是官方的bug吧? 更新: 找到原因了,报错信息被简化了,实际上是找不到(new Date()).format方法
2019-03-27 - 视频组件切换全屏的时候白屏
- 当前 Bug 的表现(可附上截图) 视频进入全屏的时候,会先白一下(整个视窗白),然后显示视频。退出全屏的时候,视窗下方会白一下(大概半个视窗白),然后正常显示。 相关视频: https://v.qq.com/x/page/a0852td53xa.html - 预期表现 别白。这里实现的是关灯看视频的效果,这一白,晃瞎了
2019-03-21 - 自定义组件中标签名选择器bug
- 当前 Bug 的表现(可附上截图) 在自定义组件中使用标签名选择器定义样式,在使用了该组件的页面内,该标签名选择器定义的样式会成为类似全局样式般的存在,污染页面及其他自定义组件的样式。 - 预期表现 根据文档的说法: 1、“组件对应 [代码]wxss[代码] 文件的样式,只对组件wxml内的节点生效” 2、“组件和引用组件的页面不能使用id选择器([代码]#a[代码])、属性选择器([代码][a][代码])和标签名选择器,请改用class选择器。” 要么全面禁用标签名选择器,使标签名选择器定义的样式失效,避免开发者误用。要么严格遵循上面第一条要求,将范围限定在自定义组件内。 否则很容易出现这样的状况:开发者在自定义组件内使用了标签名选择器(很正常),发现work了,但是没有意识到这样做会污染引用该组件的页面和其他自定义组件的样式。
2019-03-08