React.memo 主要的作用是性能优化,
使用 memo 後,程序会将 render 结果存在快取内,
并在 render 时比较前後两次的 props 是否变化,
来判定是否需要 re-render。
如果没有变化时就使用上一次 render 的结果,
以避免重新渲染没有更新的元件造成不必要消耗。
但如果是父元件重新渲染,
由於父元件宣告的 Object 都会被重新分配记忆体位址,
因此使用 React.memo 防止重新渲染将会失效。
另外,memo 的功能是优化效能,
不应用来避免 render。
shallow compare 是指遍历物件的所有 key 值,如果 key 值都一样就返回 true。也就是严格比较基本型别(number、string 等),但对物件仅比较是否指向同一个参考。
const MyComponent = React.memo(function MyComponent(props) {
return(
<div>
{ props.name }
</div>
)
});
也允许箭头函式
const MyComponent = React.memo(props=>{
return(
<div>
{ props.name }
</div>
)
})
自订比较 props 的方法,
可以让 Object 不只是比较记忆体位置
function MyComponent(props) {
/* render using props */
}
function areEqual(prevProps, nextProps) {
/*
return true if passing nextProps to render would return
the same result as passing prevProps to render,
otherwise return false
*/
}
export default React.memo(MyComponent, areEqual);
除了加入 React.memo 的第二参数之外,
也可以利用 useCallback
来避免重新渲染。
<<: DAY27 - 来加速你的网站!利用Web Worker创造多执行绪的Javascript
昨天介绍完浅层神经网路程序,今天要来研究CNN卷积神经网路: 卷积神经网路由一个或多个卷积层和顶端的...
阵列与物件混合应用 例子:有两家宠物店,一间叫miee宠物店,店里有10只猫与5只狗,可以宠物寄宿。...
在这系列教学里,我们以撰写一个以购物车为主题的 Kotlin 函式库为例,经过一连串 TDD、语法风...
汇总函数是以多笔资料列为基础,输入的资料列经过函数运算後,一组只会输出一个值,基本特性如下: 可将一...
以往工作的经历,身边工程师对测试的认识 对於目前撰写程序的开发员来说,「测试」一词大多是不会感到陌生...