返回列表 发布新帖
查看: 166|回复: 4

react 这个技术栈到底是如何做到每天都有新发现的?

像风发表于 7 天前 来自手机版 | 查看全部 |阅读模式
第一次点击按钮,组件重新渲染,输出'render',此时 count 为 1 ( count: 0 -> 1)

第二次点击按钮,组件重新渲染,输出'render',此时 count 为 1(count: 1 -> 1)

第三次点击按钮,组件不重新渲染(count: 1 -> 1)

第四次...第五次,都不会重新渲染

就...当 setCount 的值即使和当前 count 值一样,组件是否会重新渲染,竟然不一定,还要看当前 count 值的上一次渲染...如果是 0 -> 1,那么在 setCount(1)会渲染,如果是 1 -> 1 ,那么就不会再渲染...

e04d1836d4efaf1e1a5c0f0f35054367af4b69de.png
回复

使用道具 举报

不睡玫瑰发表于 6 天前 来自手机版 | 查看全部
还真是,如果不看源码肯定以为第二次点击就不会打印"render"了。
回复

使用道具 举报

轩哥哥发表于 6 天前 来自手机版 | 查看全部
每天都有新嘲点。当前情况下,除了生态,react 全是缺点。其他使用 jsx 的缺生态。
回复

使用道具 举报

慢热少年发表于 6 天前 来自手机版 | 查看全部
React 为 Concurrent 牺牲太多,越来越难直观理解,所以其他框架用 Signal 这种更符合直觉的方式。
回复

使用道具 举报

沧笙忆梦发表于 6 天前 | 查看全部
react rerender != dom rerender

react render 后还会 diff vnode tree 后再更新到 dom 上

你问题里的点击多次按钮实际上最终只触发了一次 dom rerender

不过这个确实是个问题,如果是 vue 的 ref 就不会出现这种行为
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表