useMemo不阻止组件重新渲染

时间:2020-03-01 13:24:49

标签: javascript reactjs react-hooks

我有一个Button组件,它被用作Timer组件的子代。根据计时器是否处于活动状态,它确定按钮的类型(暂停或启动)。

onDestroy

每秒钟重新渲染一次Timer组件时,Button组件将重新渲染,这是不必要的。读完this article by Kent Dodds之后,看起来像这样一个不必要的小的重新呈现组件可能微不足道,但是我还是想尝试记住该组件以防止其重新呈现。

我一直在使用React Dev Tools突出显示组件的重新渲染。这是Timer组件和子Button同时重新呈现时的样子。按钮不应该每秒重新渲染,而仅当buttonType更改时才重新渲染:

enter image description here

我尝试使用<Button kind={ buttonType } handleClick={() => toggleTimer()} /> useMemo通过将这些道具的备注版本传递给Button组件来防止这些渲染。

useCallback

虽然这似乎没有破坏任何东西,但Button组件似乎仍然重新呈现,并且记忆的Button仍然每秒出现绿色高亮显示。

0 个答案:

没有答案