Skip to content

Commit

Permalink
update: 改正错误
Browse files Browse the repository at this point in the history
  • Loading branch information
likaiqiang committed Nov 7, 2023
1 parent 76862f8 commit b40cf00
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions source/_posts/一些经验片段.md
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ const {scene,page} = Object.keys(params).length === 0 ? query : params

# 如何在小程序里(taro)使用antv f2

为什么要用antv f2,其他的像echarts、ucharts之类的不行吗?相比于后两个,f2的文档相对友好
为什么要用antv f2,其他的像echarts、ucharts之类的不行吗?相比于后两个,f2的文档友好,专为移动端而生,并且体积也小

f2官网有个“如何在小程序中使用”的示例,不过这个指的是在原生小程序中如何使用f2,和taro的用法还不太一样。网上有人写了一个兼容taro的库,[taro-f2](https://github.com/xioxin/taro-f2) ,看起来挺美好的,但是看commit三年都没更新了,issues里也是各种与taro3不兼容的声音。

Expand Down Expand Up @@ -1138,7 +1138,7 @@ react的写法大同小异。

后来经过一番挣扎,发现是react setState自动合并导致的问题,我们知道在react里面多次调用setState,react会合并这些更新,然后只执行一次更新,实际项目里也没人会刻意多次调用setState,但是这个stream太快了,在一次event loop里竟然有2到3次setState,这样react为了性能考虑,自然会合并更新,这就是丢字的原因。

知道了原因,解决方案也很简单,就是让setState不发生合并,据观察,同一个event loop里的seState会发生合并,用setTimeout把每次的setState分开,就不会发生合并了(react18之前在setTimeout里面的多个setState是同步执行的,不会发生更新合并,react18即使是setTimeout里面的更新也是会合并的)。但是一次只渲染一个字有点太浪费了,有没有办法能控制stream的频率,这种场景rxjs再适合不过了(一直久仰大名,这次终于找到独一无二的应用场景了)。
知道了原因,解决方案也很简单,就是让setState不发生合并,据观察,同一个event loop里的seState会发生合并,用setTimeout把每次的setState分开,就不会发生合并了(react18之前在setTimeout里面的多个setState是同步执行的,不会发生更新合并,react18即使是setTimeout里面的更新也是会合并的)。但是一次更新只渲染一个字有点太浪费了,有没有办法能控制stream的频率,这种场景rxjs再适合不过了(一直久仰大名,这次终于找到独一无二的应用场景了)。

```javascript
let sub
Expand Down

0 comments on commit b40cf00

Please sign in to comment.