آیا میخواهید رندرینگ در React خود را بهینه کنید؟ useMemo
و memo
دو ابزار قدرتمند در React هستند که به شما کمک میکنند تا از رندرهای غیرضروری جلوگیری کنید و عملکرد برنامه را بهبود بخشید. در این مطلب، به طور خلاصه با این دو hook آشنا میشویم.
useMemo
به شما امکان میدهد تا مقدار محاسبه شده ای را در حالت یادآوری (memoization) ذخیره کنید. به این ترتیب، اگر ورودیها تغییر نکردند، دوباره محاسبه نخواهد شد. این امر به ویژه زمانی مفید است که محاسبه یک مقدار پرهزینه است.
کد زیر نمونه ای از استفاده از useMemo
را نشان میدهد:
import React, { useMemo } from 'react';
function MyComponent({ data }) {
const calculatedValue = useMemo(() => {
console.log('Calculating...');
// محاسبات پرهزینه
let result = 0;
for (let i = 0; i < data.length; i++) {
result += data[i];
}
return result;
}, [data]);
return (
Calculated Value: {calculatedValue}
);
}
export default MyComponent;
memo
یک higher-order component (HOC) است که به شما امکان میدهد تا اجزای React را به طور موثر به حافظه بسپارید. در واقع، محاسبه مجدد اجزا را در صورت عدم تغییر ورودیها متوقف میکند.
به عنوان مثال:
import React, { memo } from 'react';
const MyComponent = React.memo(({ name }) => {
console.log('Rendering MyComponent');
return
;
});
export default MyComponent;
با استفاده از memo
، تنها زمانی که ورودی name
تغییر کند، MyComponent
مجددا رندر میشود. در غیر این صورت، به سادگی مقدار قبلی نمایش داده خواهد شد. این برای بهینه سازی اجزای پیچیده که اغلب با مقادیر ثابت رندر میشوند مفید است.
خلاصه نکات کلیدی:
useMemo
برای ذخیره مقادیر محاسبه شده استفاده میشود.memo
برای به حافظه سپردن اجزا و جلوگیری از رندرهای غیر ضروری به کار میرود.