react 这个技术栈到底是如何做到每天都有新发现的?
第一次点击按钮,组件重新渲染,输出'render',此时 count 为 1 ( count: 0 -> 1)第二次点击按钮,组件重新渲染,输出'render',此时 count 为 1(count: 1 -> 1)
第三次点击按钮,组件不重新渲染(count: 1 -> 1)
第四次...第五次,都不会重新渲染
就...当 setCount 的值即使和当前 count 值一样,组件是否会重新渲染,竟然不一定,还要看当前 count 值的上一次渲染...如果是 0 -> 1,那么在 setCount(1)会渲染,如果是 1 -> 1 ,那么就不会再渲染...
还真是,如果不看源码肯定以为第二次点击就不会打印"render"了。 每天都有新嘲点。当前情况下,除了生态,react 全是缺点。其他使用 jsx 的缺生态。 React 为 Concurrent 牺牲太多,越来越难直观理解,所以其他框架用 Signal 这种更符合直觉的方式。 react rerender != dom rerender
react render 后还会 diff vnode tree 后再更新到 dom 上
你问题里的点击多次按钮实际上最终只触发了一次 dom rerender
不过这个确实是个问题,如果是 vue 的 ref 就不会出现这种行为
页:
[1]