Open geminate opened 5 years ago
刚刚和 百度小程序 官方沟通了一下,可以通过 两次 setData 的方式解决,对应 Megalo 的方式是 修改vendor.js 里的 doUpdate 方法:
原代码:
function doUpdate() { var data = buffer.pop(); if (!isEmptyObj(data) && page.setData) { page.setData(data); } }
修改后:
function doUpdate() { var data = buffer.pop(); if (!isEmptyObj(data) && page.setData) { var temp = {}; Object.keys(data).forEach(function(key){ temp[key] = data[key] + " "; }) page.setData({...temp},()=>{ page.setData({...data}) }); } }
百度小程序官方有没有说为什么要这么做?这样做会将数据更新的量增加一倍吧?
确实会增加一倍,有性能问题。但是官方也没有说明为什么要这么做,但是这个问题是存在的。
代码与复现步骤
结果 非数字字符仍可正常输入,只有当替换后的字符发生变化后才会渲染到页面上 123 --> 123 123a ---> 123a 123a4 --->1234
期望 123 --> 123 123a ---> 123
测试后发现微信小程序无此问题,只在百度小程序上复现。 使用的是 megalo-cli