i7soft

Results 11 comments of i7soft

我的理解跟你差不多 @WebGuHui 我的理解是,不管 setData 是否经过 diff,page 每次都需要拿到**完整**的 data 来渲染**整个**virtualDom,然后此virtualDom和前一个进行 diff。由于 setData 是异步的,我也想不出什么方式才测试性能~

稍微研究过小程序在开发工具的appserver代码,setData 是每次操作后把数据放到一个队列的,之后再统一合并,并不会每次 setData 都 render 一次,这个有点类似 react.js 的 setState,所以分开写多个 setData 和一次性 setdata 理论上应该不差多少~~~ 只是技术探讨,希望能在项目中尽快集成这么好的东西~~~

json diff 之后,官方的表单组件某些属性,比如 value 值,还有 scroll-view 的 x、y 等~如果前后的 data 的值一样,diff 后,那不就不会更新相应组件状态了?

官方组件里面,有些特殊的 prop,在用户 setData 后,即使 data 前后一样,都是会更新 ui 状态的~demo 一会弄个发上来

使用原生 setdata:https://developers.weixin.qq.com/s/25gfSzmq7R3E 使用 westore:https://developers.weixin.qq.com/s/eJgplzmg7V3R 可以看出使用 westore 导致一些行为不是预期

个人猜测:内部组件有些需要跟用户交互的 prop,是有特殊处理,比如经过用户 setData 后,data 的时间戳改变,时间戳改变了,即使值是一样,也需要反馈到 ui 上;但如果 data 提前被 diff 掉了,导致data 的时间戳不变,ui 上相应就不更新了~所以 westore 可以适合很多场景,但某些时候要注意特殊处理

看了你的解决方案,这样会导致 this.data.value 被改变掉了,小程序里面,原本是用户交互状态不影响 data 的,这个最好也提醒一下

我也是,在 Rn 项目上,ImagePicker.getAlbum 什么都没反应

I fixed by that: ``` var NativeLinking=require("./node_modules/react-native/Libraries/Linking/NativeLinking").default; NativeLinking.getInitialURL().then((url) => { console.log('Initial url is: ' + url); }).catch(err => console.error('An error occurred', err)); ```

> 安卓设备需要安装语音引擎包。例如 装了,并且在设置选择了搜狗 TTS,使用 react-native-tts 也不行