react μ€ν°λμμ 리μ‘νΈλ₯Ό λ€λ£¨λ κΈ°μ μ΄λΌλ μ± μ μ μ νκ³ μ΄ μ± μ μ½κ³ λ°°μ΄ κ²μ λ°νμΌλ‘ μμ±λμλ€.
useMemo
λ₯Ό μ΄μ©νλ©΄ ν¨μ μ»΄ν¬λνΈ λ΄λΆμμ λ°μνλ μ°μ°μ μ΅μ νν μ μλ€.useMemo
μ 첫λ²μ§Έ μΈμλ‘ μ΄λ»κ² μ°μ°ν μ§ μ μνλ ν¨μλ₯Ό λ£κ³ , λλ²μ§Έ μΈμλ‘ deps
λ°°μ΄μ λ£μ΄μ€λ€.deps
λ°°μ΄ μμ λ£μ λ΄μ©μ΄ λ°λλ©΄, 첫λ²μ§Έ μΈμμ ν¨μλ₯Ό νΈμΆνμ¬ μ°μ°μ μ§ννκ³ , λ§μ½ λ΄μ©μ΄ λ°λμ§ μμλ€λ©΄ μ΄μ μ μ°μ°ν κ°μ μ¬μ¬μ©νλ€.const getAverage(numbers){
console.log("νκ· κ° κ³μ°μ€...");
if (numbers.length === 0) return 0;
const sum = numbers.reduce((value, number) => value + number);
return sum / numbers.length;
};
const Average = () => {
const [list, setList] = useState([]);
const [number, setNumber] = useState("");
const onChange = (e) => {
setNumber(e.target.value);
};
const onInsert = () => {
setList(list.concat(parseInt(number));
setNumber("");
}
return (
<div>
<input
type="text"
name="number"
value={number}
onChange={onChange}/>
<button onClick={onInsert}>λ±λ‘</button>
<ul>
{list.map((value, index) => (<li key={index}>{value}</li>))}
</ul>
<div>νκ· κ°: {getAverage(list)}</div>
</div>
);
}
useMemo
λ₯Ό μ΄μ©νλ©΄ μ΄λ¬ν μμ
μ μ΅μ νν μ μλ€. λ λλ§νλ κ³Όμ μμ νΉμ κ°μ΄ λ°λμμ λλ§ μ°μ°μ μ€ννκ³ , μνλ κ°μ΄ λ°λμ§ μμμ λλ μ΄μ μ μ°μ°νλ κ²°κ³Όλ₯Ό μ¬μ¬μ©νλ€.import { useMemo } from "react";
const avg = useMemo(() => getAverage(list), [list]);
// list λ°°μ΄μ λ΄μ©μ΄ λ°λ λλ§ ν¨μ νΈμΆ