New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
微信小程序中,在增加数组元素时,组件属性中无法正确的更新数组的 length #882
Comments
的确有这样的问题,感谢指出,已修复。 |
@joyran 我们讨论过你的观点后,决定还是要先保证程序的正确性。这个 issue 会先开着,我们会尝试添加一个额外的 API 给开发者绕过 diff 按路径更新。 |
当数组很大时性能下降的太厉害了,希望早日解决,也非常感谢你们开发的这个amazing框架。 |
@Chen-jj 我已经提供了代码片段给微信官方了,好奇怪当点击第一个按钮时, {{contents.length}} 中的内容 contents.length 已经变为1了,但是三元运算中 contents.length 还是 0,所以会出现按钮不可点击,但是文本已经变成1了。 |
@Chen-jj hello,这个问题现在微信官方好像没有修复的计划,那Taro准备怎么处理呢 |
@Chen-jj hello,有没有计划提供一个单独的接口可以路径更新的方式增加数组元素 |
@joyran 还在考虑中。 |
@Chen-jj Hi,这个考虑的怎么样了 |
@Chen-jj 可以考虑在更新时也修改一下文档里面的涉及到这部分问题的示例代码 :) |
@hitomi done |
问题描述
微信小程序中,在增加数组元素时,组件属性中无法正确的更新数组的 length,不过如果作为内容渲染是没问题的,若从数组中删除元素也不会遇到问题
复现步骤
在微信小程序中无论怎么按
add line
按钮,remove line
按钮的状态都是disabled
的期望行为
在增加数组元素时,组件属性中的数组的 length 应当可以正常更新
报错信息
无
系统信息
补充信息
通过调查,taro 目前更新数组的方式是先 diff,若数组长度减小则会直接替换掉整个数组,若数组的长度没有减小,会通过 数据路径 的方式去 setData,类似于
进一步调查发现,这可能是微信小程序的一个BUG,通过 数据路径 的方式增加数组元素可能导致组件属性中无法正确获取数组的 length,但直接替换掉整个数组是没问题的,而且只在作为组件属性的时候会出问题,作为文本渲染则不会受到影响
原生的微信小程序中的复现方法
猜测可以暂时通过调整一下 diff 的方法解决问题
修改为只有数组元素数量一致的时候再去 diff
The text was updated successfully, but these errors were encountered: