React useMemo
Hook
React useMemo
Hook သည် အလွတ်ရထားသောတန်ဖိုးကို ပြန်ပေးသည်။
ပြန်လည်တွက်ချက်ရန် မလိုအပ်စေရန် အလွတ်ကျက်မှတ်ခြင်းကို တန်ဖိုးတစ်ခုအဖြစ် သိမ်းဆည်းခြင်းဟု ယူဆပါ။
Hook သည် useMemo
၎င်း၏မှီခိုမှုတစ်ခုအား အပ်ဒိတ်လုပ်သည့်အခါမှသာ အလုပ်လုပ်ပါသည်။
ဒါက စွမ်းဆောင်ရည်ကို မြှင့်တင်ပေးနိုင်ပါတယ်။
useMemo
Hook နှင့် Hook သည် useCallback
ဆင်တူသည်။ အဓိကကွာခြားချက်မှာ အ useMemo
လွတ်ကျက်မှတ်ထားသောတန်ဖိုးကို
useCallback
ပြန်ပေးကာ အလွတ်ကျက်ထားသည့်လုပ်ဆောင်ချက်ကို ပြန်ပေးခြင်းဖြစ်သည်။ useCallback အခန်းuseCallback
တွင် ပိုမိုလေ့လာနိုင်ပါသည် ။
စွမ်းဆောင်ရည်
Hook ကို useMemo
မလိုအပ်ဘဲ လည်ပတ်ခြင်းမှ စျေးကြီးပြီး အရင်းအနှီးများသော လုပ်ဆောင်ချက်များကို ထိန်းသိမ်းထားရန် အသုံးပြုနိုင်သည်။
ဤဥပမာတွင်၊ ကျွန်ုပ်တို့တွင် render တစ်ခုစီတိုင်းတွင် လုပ်ဆောင်နိုင်သော တန်ဖိုးကြီးသည့်လုပ်ဆောင်ချက်တစ်ခုရှိသည်။
အရေအတွက်ကိုပြောင်းလဲခြင်း သို့မဟုတ် လုပ်စရာတစ်ခုထည့်သည့်အခါ၊ လုပ်ဆောင်မှုတွင် နှောင့်နှေးမှုကို သင်သတိပြုမိပါလိမ့်မည်။
ဥပမာ-
လုပ်ဆောင်ချက် ညံ့ဖျင်းခြင်း။ expensiveCalculation
လုပ်ဆောင်ချက်သည် render တစ်ခုစီတိုင်းတွင် အလုပ်လုပ်သည် -
import { useState } from "react";
import ReactDOM from "react-dom";
const App = () => {
const [count, setCount] = useState(0);
const [todos, setTodos] = useState([]);
const calculation = expensiveCalculation(count);
const increment = () => {
setCount((c) => c + 1);
};
const addTodo = () => {
setTodos((t) => [...t, "New Todo"]);
};
return (
<div>
<div>
<h2>My Todos</h2>
{todos.map((todo, index) => {
return <p key={index}>{todo}</p>;
})}
<button onClick={addTodo}>Add Todo</button>
</div>
<hr />
<div>
Count: {count}
<button onClick={increment}>+</button>
<h2>Expensive Calculation</h2>
{calculation}
</div>
</div>
);
};
const expensiveCalculation = (num) => {
console.log("Calculating...");
for (let i = 0; i < 1000000000; i++) {
num += 1;
}
return num;
};
ReactDOM.render(<App />, document.getElementById('root'));
လက်မှတ်ရယူပါ။
$95 စာရင်းသွင်းပါ။
သုံးပါ။ useMemo
ဤလုပ်ဆောင်ချက်ပြဿနာကို ဖြေရှင်းရန်၊ လုပ်ဆောင်ချက်ကို useMemo
အလွတ်ကျက်ရန် Hook ကို အသုံးပြုနိုင်ပါသည် expensiveCalculation
။ ၎င်းသည် လိုအပ်သည့်အခါမှသာ လုပ်ဆောင်ချက်ကို လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။
ကျွန်ုပ်တို့သည် စျေးကြီးသော လုပ်ဆောင်ချက်ခေါ်ဆိုမှုဖြင့် ခြုံငုံ useMemo
နိုင်ပါသည်။
useMemo
မှီခိုမှုကိုကြေငြာရန် Hook သည် ဒုတိယဘောင်တစ်ခုကို လက်ခံသည် ။ စျေးကြီးသောလုပ်ဆောင်ချက်သည် ၎င်း၏မှီခိုမှုများပြောင်းလဲသွားမှသာ လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။
count
အောက်ပါဥပမာတွင်၊ စျေးကြီးသောလုပ်ဆောင်ချက် သည် ပြောင်းလဲ သည့်အခါတွင်သာ လုပ်ဆောင်မည်ဖြစ်ပြီး todo များထည့်သည့်အခါတွင်သာ လုပ်ဆောင်မည်ဖြစ်သည်။
ဥပမာ-
useMemo
Hook ကို အသုံးပြု၍ စွမ်းဆောင်ရည် ဥပမာ
import { useState, useMemo } from "react";
import ReactDOM from "react-dom";
const App = () => {
const [count, setCount] = useState(0);
const [todos, setTodos] = useState([]);
const calculation = useMemo(() => expensiveCalculation(count), [count]);
const increment = () => {
setCount((c) => c + 1);
};
const addTodo = () => {
setTodos((t) => [...t, "New Todo"]);
};
return (
<div>
<div>
<h2>My Todos</h2>
{todos.map((todo, index) => {
return <p key={index}>{todo}</p>;
})}
<button onClick={addTodo}>Add Todo</button>
</div>
<hr />
<div>
Count: {count}
<button onClick={increment}>+</button>
<h2>Expensive Calculation</h2>
{calculation}
</div>
</div>
);
};
const expensiveCalculation = (num) => {
console.log("Calculating...");
for (let i = 0; i < 1000000000; i++) {
num += 1;
}
return num;
};
ReactDOM.render(<App />, document.getElementById('root'));