本周的精读依然没有文章,由笔者开发经验总结而来。 通过笔者对 Function Component 的开发经验进行分享,内容由浅入深,偏入门型。 --- [精读《Function Component 入门》](https://github.com/dt-fe/weekly/blob/v2/104.%E7%B2%BE%E8%AF%BB%E3%80%8AFunction%20Component%20%E5%85%A5%E9%97%A8%E3%80%8B.md)
Activity
Kavelaa commentedon Oct 16, 2019
你好,这个地方的例子我感觉不太严谨
https://github.com/dt-fe/weekly/blob/v2/104.%E7%B2%BE%E8%AF%BB%E3%80%8AFunction%20Component%20%E5%85%A5%E9%97%A8%E3%80%8B.md#%E5%B0%86%E5%87%BD%E6%95%B0%E6%8A%BD%E5%88%B0%E7%BB%84%E4%BB%B6%E5%A4%96%E9%83%A8
其中在
useDraggable
和const drag = ...
这里,笔者想表达的意思应该是说,当Parent
组件中有一个useEffect
且将drag
作为依赖项的时候,因为依赖了没有实际价值的count
和step
频繁的变化导致drag
频繁变化,最终导致副作用被频繁地触发,而drag
函数中涉及了高开支的计算,这里对性能造成了很大的影响。而当我第一次看见这里的时候,容易让我理解成传入
useCallback
的函数被立即执行了,因为在Parent
函数里边写到const drag = ...
之后就没下文了,从而带给我一种感觉就是useDraggable
把返回值赋给drag
的时候就已经进行计算了,但是实际上是因为drag
发生变化,从而触发了useEffect
导致drag
函数被调用,这个时候才实际进行了高开支计算。ascoders commentedon Oct 16, 2019
是的,感谢纠正,
drag
没有执行时是没有开销的。CorgiTT commentedon Dec 7, 2020
dispatch({type:'useFetch'})
?Flying-Snail commentedon Feb 22, 2021
这里不是很理解,为什么三次点击会触发四次渲染呢,每次点击不是只会更改一次 count,一个 count 的更改,不是只触发一次重新渲染么?
ascoders commentedon Feb 23, 2021
@Flying-Snail 这里说的是一共产生了 4 次渲染闭包。算上初始化的那次,一共 4 次。
suerta-git commentedon Apr 14, 2021
currentValue那里,每一次更新currentValue的值都需要等到渲染完成之后,那在代码执行过程中,currentValue.current不实际是上一次render时候的值而不是本次render的值吗?
newsekaes commentedon Aug 15, 2022
是的,一开始读的时候也是觉得不理解,想了片刻才转过弯来