React useCallbackμ λν ν¬κ΄μ μΈ κ°μ΄λλ‘, React μ ν리μΌμ΄μ μ μ±λ₯ μ΅μ νλ₯Ό μν ν¨μ λ©λͺ¨μ΄μ μ΄μ κΈ°μ μ νꡬν©λλ€. λΆνμν μ¬ λ λλ§μ λ°©μ§νκ³ ν¨μ¨μ±μ ν₯μμν€λ λ°©λ²μ μμ보μΈμ.
React useCallback: μ±λ₯ μ΅μ νλ₯Ό μν ν¨μ λ©λͺ¨μ΄μ μ΄μ λ§μ€ν°νκΈ°
React κ°λ° λΆμΌμμ λΆλλ½κ³ λ°μμ±μ΄ λ°μ΄λ μ¬μ©μ κ²½νμ μ 곡νλ λ° μμ΄ μ±λ₯ μ΅μ νλ κ°μ₯ μ€μν©λλ€. μ΄λ₯Ό λ¬μ±νκΈ° μν React κ°λ°μμ λ¬΄κΈ°κ³ μμ κ°λ ₯ν λꡬ μ€ νλλ useCallback
μ
λλ€. μ΄λ ν¨μ λ©λͺ¨μ΄μ μ΄μ
μ κ°λ₯νκ² νλ React Hookμ
λλ€. μ΄ ν¬κ΄μ μΈ κ°μ΄λλ useCallback
μ 볡μ‘μ±μ λν΄ μμΈν μμλ³΄κ³ , React μ»΄ν¬λνΈλ₯Ό μ΅μ ννλ λ° μμ΄ κ·Έ λͺ©μ , μ΄μ λ° μ€μ μ μ© μ¬λ‘λ₯Ό μ΄ν΄λ΄
λλ€.
ν¨μ λ©λͺ¨μ΄μ μ΄μ μ΄ν΄νκΈ°
ν΅μ¬μ μΌλ‘, λ©λͺ¨μ΄μ μ΄μ
μ λΉμ©μ΄ λ§μ΄ λλ ν¨μ νΈμΆμ κ²°κ³Όλ₯Ό μΊμ±νκ³ λμΌν μ
λ ₯μ΄ λ€μ λ°μν λ μΊμλ κ²°κ³Όλ₯Ό λ°ννλ μ΅μ ν κΈ°μ μ
λλ€. Reactμ λ§₯λ½μμ useCallback
μ μ¬μ©ν ν¨μ λ©λͺ¨μ΄μ μ΄μ
μ λ λλ§ κ°μ ν¨μμ IDλ₯Ό μ μ§νμ¬ ν΄λΉ ν¨μμ μμ‘΄νλ μμ μ»΄ν¬λνΈμ λΆνμν μ¬ λ λλ§μ λ°©μ§νλ λ° μ€μ μ λ‘λλ€.
useCallback
μ΄ μμΌλ©΄, κΈ°λ₯μ μ»΄ν¬λνΈκ° λ λλ§λ λλ§λ€ μλ‘μ΄ ν¨μ μΈμ€ν΄μ€κ° μμ±λ©λλ€. ν¨μμ λ‘μ§κ³Ό μ’
μμ±μ΄ λ³κ²½λμ§ μμ κ²½μ°μλ λ§μ°¬κ°μ§μ
λλ€. μ΄λ¬ν ν¨μκ° μμ μ»΄ν¬λνΈμ propsλ‘ μ λ¬λ λ μ±λ₯ λ³λͺ© νμμ΄ λ°μνμ¬ λΆνμνκ² μ¬ λ λλ§λ μ μμ΅λλ€.
useCallback
Hook μκ°
useCallback
Hookμ React κΈ°λ₯μ μ»΄ν¬λνΈμμ ν¨μλ₯Ό λ©λͺ¨μ΄μ μ΄μ
νλ λ°©λ²μ μ 곡ν©λλ€. λ κ°μ μΈμλ₯Ό λ°μ΅λλ€.
- λ©λͺ¨μ΄μ μ΄μ ν ν¨μ.
- μ’ μμ± λ°°μ΄.
useCallback
μ μ’
μμ± λ°°μ΄μ μ’
μμ± μ€ νλκ° λ λλ§ κ°μ λ³κ²½λ κ²½μ°μλ§ λ³κ²½λλ ν¨μμ λ©λͺ¨μ΄μ μ΄μ
λ λ²μ μ λ°νν©λλ€.
λ€μμ κΈ°λ³Έμ μΈ μμμ λλ€.
import React, { useCallback } from 'react';
function MyComponent() {
const handleClick = useCallback(() => {
console.log('Button clicked!');
}, []); // λΉ μ’
μμ± λ°°μ΄
return ;
}
export default MyComponent;
μ΄ μμμ, handleClick
ν¨μλ λΉ μ’
μμ± λ°°μ΄([]
)μ μ¬μ©νμ¬ useCallback
μ μ¬μ©νμ¬ λ©λͺ¨μ΄μ μ΄μ
λ©λλ€. μ¦, handleClick
ν¨μλ μ»΄ν¬λνΈκ° μ²μ λ λλ§λ λ ν λ²λ§ μμ±λλ©° IDλ νμ μ¬ λ λλ§μμ λμΌνκ² μ μ§λ©λλ€. λ²νΌμ onClick
propμ νμ λμΌν ν¨μ μΈμ€ν΄μ€λ₯Ό λ°μΌλ―λ‘, λ²νΌ μ»΄ν¬λνΈμ λΆνμν μ¬ λ λλ§μ λ°©μ§ν©λλ€(λ©λͺ¨μ΄μ μ΄μ
μΌλ‘ μ΄μ μ μ»μ μ μλ λ 볡μ‘ν μ»΄ν¬λνΈμΈ κ²½μ°).
useCallback
μ¬μ©μ μ΄μ
- λΆνμν μ¬ λ λλ§ λ°©μ§:
useCallback
μ μ£Όμ μ΄μ μ μμ μ»΄ν¬λνΈμ λΆνμν μ¬ λ λλ§μ λ°©μ§νλ κ²μ λλ€. propμΌλ‘ μ λ¬λ ν¨μκ° λͺ¨λ λ λλ§μμ λ³κ²½λλ©΄, κΈ°λ³Έ λ°μ΄ν°κ° λ³κ²½λμ§ μμ κ²½μ°μλ μμ μ»΄ν¬λνΈμ μ¬ λ λλ§μ νΈλ¦¬κ±°ν©λλ€.useCallback
μΌλ‘ ν¨μλ₯Ό λ©λͺ¨μ΄μ μ΄μ νλ©΄ λμΌν ν¨μ μΈμ€ν΄μ€κ° μ λ¬λμ΄ λΆνμν μ¬ λ λλ§μ λ°©μ§ν©λλ€. - μ±λ₯ μ΅μ ν: μ¬ λ λλ§ νμλ₯Ό μ€μμΌλ‘μ¨
useCallback
μ νΉν κΉμ΄ μ€μ²©λ μ»΄ν¬λνΈκ° μλ 볡μ‘ν μ ν리μΌμ΄μ μμ μλΉν μ±λ₯ ν₯μμ κΈ°μ¬ν©λλ€. - μ½λ κ°λ
μ± ν₯μ:
useCallback
μ μ¬μ©νλ©΄ ν¨μμ μ’ μμ±μ λͺ μμ μΌλ‘ μ μΈνμ¬ μ½λλ₯Ό λ μ½κΈ° μ½κ³ μ μ§ κ΄λ¦¬νκΈ° μ½κ² λ§λ€ μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ€λ₯Έ κ°λ°μκ° ν¨μμ λμκ³Ό μ μ¬μ μΈ λΆμμ©μ μ΄ν΄νλ λ° λμμ΄ λ©λλ€.
μ€μ©μ μΈ μμ λ° μ¬μ© μ¬λ‘
μμ 1: λͺ©λ‘ μ»΄ν¬λνΈ μ΅μ ν
ListItem
μ΄λΌλ μμ μ»΄ν¬λνΈλ₯Ό μ¬μ©νμ¬ νλͺ© λͺ©λ‘μ λ λλ§νλ μμ μ»΄ν¬λνΈκ° μλ€κ³ κ°μ ν΄ λ³΄κ² μ΅λλ€. ListItem
μ»΄ν¬λνΈλ κ° νλͺ©μ λν ν΄λ¦ μ΄λ²€νΈλ₯Ό μ²λ¦¬νλ ν¨μμΈ onItemClick
propμ λ°μ΅λλ€.
import React, { useState, useCallback } from 'react';
function ListItem({ item, onItemClick }) {
console.log(`ListItem rendered for item: ${item.id}`);
return onItemClick(item.id)}>{item.name} ;
}
const MemoizedListItem = React.memo(ListItem);
function MyListComponent() {
const [items, setItems] = useState([
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' },
{ id: 3, name: 'Item 3' },
]);
const [selectedItemId, setSelectedItemId] = useState(null);
const handleItemClick = useCallback((id) => {
console.log(`Item clicked: ${id}`);
setSelectedItemId(id);
}, []); // μ’
μμ±μ΄ μμΌλ―λ‘ λ³κ²½λμ§ μμ
return (
{items.map(item => (
))}
);
}
export default MyListComponent;
μ΄ μμμ, handleItemClick
μ useCallback
μ μ¬μ©νμ¬ λ©λͺ¨μ΄μ μ΄μ
λ©λλ€. μ€μν κ²μ, ListItem
μ»΄ν¬λνΈκ° React.memo
λ‘ λνλμ΄ μλ€λ κ²μ
λλ€. μ΄λ propμ μμ λΉκ΅λ₯Ό μνν©λλ€. handleItemClick
μ μ’
μμ±μ΄ λ³κ²½λ λλ§ λ³κ²½λκΈ° λλ¬Έμ(μ’
μμ± λ°°μ΄μ΄ λΉμ΄ μμΌλ―λ‘ λ³κ²½λμ§ μμ), React.memo
λ `items` μνκ° λ³κ²½λ κ²½μ°(μ: νλͺ©μ μΆκ°νκ±°λ μ κ±°νλ κ²½μ°) ListItem
μ΄ λ€μ λ λλ§λλ κ²μ λ°©μ§ν©λλ€.
useCallback
μ΄ μμΌλ©΄, MyListComponent
κ° λ λλ§λ λλ§λ€ μλ‘μ΄ handleItemClick
ν¨μκ° μμ±λμ΄ κ° ListItem
μ΄ νλͺ© λ°μ΄ν° μμ²΄κ° λ³κ²½λμ§ μμ κ²½μ°μλ λ€μ λ λλ§λ©λλ€.
μμ 2: μμ μ»΄ν¬λνΈ μ΅μ ν
μ¬λ¬ μ
λ ₯ νλμ μ μΆ λ²νΌμ΄ μλ μμ μ»΄ν¬λνΈλ₯Ό μκ°ν΄ λ³΄κ² μ΅λλ€. κ° μ
λ ₯ νλμλ μ»΄ν¬λνΈμ μνλ₯Ό μ
λ°μ΄νΈνλ onChange
μ²λ¦¬κΈ°κ° μμ΅λλ€. useCallback
μ μ¬μ©νμ¬ μ΄λ¬ν onChange
μ²λ¦¬κΈ°λ₯Ό λ©λͺ¨μ΄μ μ΄μ
νμ¬ μ΄μ μμ‘΄νλ μμ μ»΄ν¬λνΈμ λΆνμν μ¬ λ λλ§μ λ°©μ§ν μ μμ΅λλ€.
import React, { useState, useCallback } from 'react';
function MyFormComponent() {
const [name, setName] = useState('');
const [email, setEmail] = useState('');
const handleNameChange = useCallback((event) => {
setName(event.target.value);
}, []);
const handleEmailChange = useCallback((event) => {
setEmail(event.target.value);
}, []);
const handleSubmit = useCallback((event) => {
event.preventDefault();
console.log(`Name: ${name}, Email: ${email}`);
}, [name, email]);
return (
);
}
export default MyFormComponent;
μ΄ μμμ, handleNameChange
, handleEmailChange
, κ·Έλ¦¬κ³ handleSubmit
μ λͺ¨λ useCallback
μ μ¬μ©νμ¬ λ©λͺ¨μ΄μ μ΄μ
λ©λλ€. handleNameChange
λ° handleEmailChange
μ μνλ§ μ€μ νλ©΄ λκ³ μΈλΆ λ³μμ μμ‘΄νμ§ μμΌλ―λ‘ λΉ μ’
μμ± λ°°μ΄μ κ°μ΅λλ€. handleSubmit
μ `name` λ° `email` μνμ μμ‘΄νλ―λ‘ ν΄λΉ κ° μ€ νλκ° λ³κ²½λ λλ§ λ€μ μμ±λ©λλ€.
μμ 3: κΈλ‘λ² κ²μ μ°½ μ΅μ ν
λ€μν μΈμ΄μ λ¬Έμ μ§ν©μΌλ‘ κ²μμ μ²λ¦¬ν΄μΌ νλ κΈλ‘λ² μ μ μκ±°λ νλ«νΌμ© μΉμ¬μ΄νΈλ₯Ό ꡬμΆνκ³ μλ€κ³ μμν΄ λ³΄μΈμ. κ²μ μ°½μ 볡μ‘ν μ»΄ν¬λνΈμ΄λ©°, μ±λ₯μ΄ μ΅μ νλλλ‘ νλ €κ³ ν©λλ€.
import React, { useState, useCallback } from 'react';
function SearchBar({ onSearch }) {
const [searchTerm, setSearchTerm] = useState('');
const handleInputChange = (event) => {
setSearchTerm(event.target.value);
};
const handleSearch = useCallback(() => {
onSearch(searchTerm);
}, [searchTerm, onSearch]);
return (
);
}
export default SearchBar;
μ΄ μμμ handleSearch
ν¨μλ useCallback
μ μ¬μ©νμ¬ λ©λͺ¨μ΄μ μ΄μ
λ©λλ€. μ΄λ searchTerm
λ° onSearch
propμ μμ‘΄ν©λλ€(μμ μ»΄ν¬λνΈμμλ λ©λͺ¨μ΄μ μ΄μ
λλ€κ³ κ°μ ). μ΄λ κ² νλ©΄ κ²μμ΄κ° λ³κ²½λ λλ§ κ²μ ν¨μκ° λ€μ μμ±λμ΄ κ²μ μ°½ μ»΄ν¬λνΈ λ° ν¬ν¨ν μ μλ λͺ¨λ μμ μ»΄ν¬λνΈμ λΆνμν μ¬ λ λλ§μ λ°©μ§ν©λλ€. μ΄λ `onSearch`κ° λκ·λͺ¨ μ ν μΉ΄νλ‘κ·Έλ₯Ό νν°λ§νλ κ²κ³Ό κ°μ΄ κ³μ° λΉμ©μ΄ λ§μ΄ λλ μμ
μ νΈλ¦¬κ±°νλ κ²½μ° νΉν μ€μν©λλ€.
useCallback
μ μ¬μ©ν΄μΌ νλ κ²½μ°
useCallback
μ κ°λ ₯ν μ΅μ ν λꡬμ΄μ§λ§, μ μ€νκ² μ¬μ©ν΄μΌ ν©λλ€. useCallback
μ κ³Όλνκ² μ¬μ©νλ©΄ λ©λͺ¨μ΄μ μ΄μ
λ ν¨μλ₯Ό μμ±νκ³ κ΄λ¦¬νλ μ€λ²ν€λλ‘ μΈν΄ μ€μ λ‘ μ±λ₯μ΄ μ νλ μ μμ΅λλ€.
λ€μμ useCallback
μ μ¬μ©ν΄μΌ νλ κ²½μ°μ λν λͺ κ°μ§ μ§μΉ¨μ
λλ€.
React.memo
λ‘ λνλ μμ μ»΄ν¬λνΈμ propμΌλ‘ ν¨μλ₯Ό μ λ¬ν λ: μ΄κ²μuseCallback
μ κ°μ₯ μΌλ°μ μ΄κ³ ν¨κ³Όμ μΈ μ¬μ© μ¬λ‘μ λλ€. ν¨μλ₯Ό λ©λͺ¨μ΄μ μ΄μ νλ©΄ μμ μ»΄ν¬λνΈκ° λΆνμνκ² μ¬ λ λλ§λλ κ²μ λ°©μ§ν μ μμ΅λλ€.useEffect
ν λ΄λΆμμ ν¨μλ₯Ό μ¬μ©ν λ: ν¨μκ°useEffect
ν μ μ’ μμ±μΌλ‘ μ¬μ©λλ κ²½μ°,useCallback
μΌλ‘ λ©λͺ¨μ΄μ μ΄μ νλ©΄ λͺ¨λ λ λλ§μμ λΆνμνκ² μ€νλλ κ²μ λ°©μ§ν μ μμ΅λλ€. μ΄λ ν¨μμ IDκ° μ’ μμ±μ΄ λ³κ²½λ λλ§ λ³κ²½λκΈ° λλ¬Έμ λλ€.- κ³μ° λΉμ©μ΄ λ§μ΄ λλ ν¨μλ₯Ό μ²λ¦¬ν λ: ν¨μκ° λ³΅μ‘ν κ³μ°μ΄λ μ°μ°μ μννλ κ²½μ°,
useCallback
μΌλ‘ λ©λͺ¨μ΄μ μ΄μ νλ©΄ κ²°κ³Όλ₯Ό μΊμ±νμ¬ μλΉν μ²λ¦¬ μκ°μ μ μ½ν μ μμ΅λλ€.
λ°λλ‘, λ€μκ³Ό κ°μ μν©μμλ useCallback
μ μ¬μ©νμ§ λ§μμμ€.
- μ’ μμ±μ΄ μλ κ°λ¨ν ν¨μμ κ²½μ°: κ°λ¨ν ν¨μλ₯Ό λ©λͺ¨μ΄μ μ΄μ νλ μ€λ²ν€λκ° μ΄μ μ λ₯κ°ν μ μμ΅λλ€.
- ν¨μμ μ’ μμ±μ΄ μμ£Ό λ³κ²½λλ κ²½μ°: ν¨μμ μ’ μμ±μ΄ μ§μμ μΌλ‘ λ³κ²½λλ κ²½μ°, λ©λͺ¨μ΄μ μ΄μ λ ν¨μκ° λͺ¨λ λ λλ§μμ λ€μ μμ±λμ΄ μ±λ₯ μ΄μ μ 무ν¨νν©λλ€.
- μ±λ₯μ΄ ν₯μλλμ§ νμ ν μ μλ κ²½μ°: μ€μ λ‘ μ±λ₯μ΄ ν₯μλκ³ μλμ§ νμΈνκΈ° μν΄ νμ
useCallback
μ μ¬μ©νκΈ° μ κ³Ό νμ μ½λλ₯Ό λ²€μΉλ§νΉνμμμ€.
ν¨μ λ° μΌλ°μ μΈ μ€μ
- μ’
μμ± μμ΄λ²λ¦¬κΈ°:
useCallback
μ μ¬μ©ν λ κ°μ₯ νν μ€μλ ν¨μμ λͺ¨λ μ’ μμ±μ μ’ μμ± λ°°μ΄μ ν¬ν¨νλ κ²μ μλ κ²μ λλ€. μ΄λ μ€λλ ν΄λ‘μ μ μκΈ°μΉ μμ λμμΌλ‘ μ΄μ΄μ§ μ μμ΅λλ€. ν¨μκ° μμ‘΄νλ λ³μλ₯Ό νμ μ μ€νκ² κ³ λ €νκ³ μ’ μμ± λ°°μ΄μ ν¬ν¨νμμμ€. - κ³Όλν μ΅μ ν: μμμ μΈκΈνλ―μ΄,
useCallback
μ κ³Όλνκ² μ¬μ©νλ©΄ μ±λ₯μ΄ μ νλ μ μμ΅λλ€. μ€μ λ‘ νμνκ³ μ±λ₯μ΄ ν₯μλκ³ μλ€λ μ¦κ±°κ° μλ κ²½μ°μλ§ μ¬μ©νμμμ€. - μλͺ»λ μ’ μμ± λ°°μ΄: μ’ μμ±μ΄ μ¬λ°λ₯Έμ§ νμΈνλ κ²μ λ§€μ° μ€μν©λλ€. μλ₯Ό λ€μ΄, ν¨μ λ΄μμ μν λ³μλ₯Ό μ¬μ©νλ κ²½μ°, μνκ° λ³κ²½λ λ ν¨μκ° μ λ°μ΄νΈλλλ‘ μ’ μμ± λ°°μ΄μ ν¬ν¨ν΄μΌ ν©λλ€.
useCallback
μ λμ
useCallback
μ κ°λ ₯ν λꡬμ΄μ§λ§, Reactμμ ν¨μ μ±λ₯μ μ΅μ ννλ λ° μ¬μ©ν μ μλ λμμ μΈ μ κ·Ό λ°©μμ΄ μμ΅λλ€.
React.memo
: μμμμ 보μλ―μ΄, μμ μ»΄ν¬λνΈλ₯ΌReact.memo
λ‘ λννλ©΄ propμ΄ λ³κ²½λμ§ μμ κ²½μ° μ¬ λ λλ§λλ κ²μ λ°©μ§ν μ μμ΅λλ€. μ΄λ μμ μ»΄ν¬λνΈμ μ λ¬λ ν¨μ propμ΄ μμ μ μΌλ‘ μ μ§λλλ‘useCallback
κ³Ό ν¨κ» μμ£Ό μ¬μ©λ©λλ€.useMemo
:useMemo
ν μuseCallback
κ³Ό μ μ¬νμ§λ§, ν¨μ μμ²΄κ° μλ ν¨μ νΈμΆμ *κ²°κ³Ό*λ₯Ό λ©λͺ¨μ΄μ μ΄μ ν©λλ€. μ΄λ λΉμ©μ΄ λ§μ΄ λλ κ³μ° λλ λ°μ΄ν° λ³νμ λ©λͺ¨μ΄μ μ΄μ νλ λ° μ μ©ν μ μμ΅λλ€.- μ½λ λΆν : μ½λ λΆν μ μ ν리μΌμ΄μ μ νμμ λ°λΌ λ‘λλλ λ μμ μ²ν¬λ‘ λλλ κ²μ ν¬ν¨ν©λλ€. μ΄λ μ΄κΈ° λ‘λ μκ°κ³Ό μ λ°μ μΈ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€.
- κ°μν: μλμκ³Ό κ°μ κ°μν κΈ°μ μ 보μ΄λ νλͺ©λ§ λ λλ§νμ¬ λλμ λ°μ΄ν°λ₯Ό λ λλ§ν λ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€.
useCallback
λ° μ°Έμ‘°μ λμΌμ±
useCallback
μ λ©λͺ¨μ΄μ μ΄μ
λ ν¨μμ λν μ°Έμ‘°μ λμΌμ±μ 보μ₯ν©λλ€. μ¦, μ’
μμ±μ΄ λ³κ²½λμ§ μλ ν ν¨μ ID(μ¦, λ©λͺ¨λ¦¬μ ν¨μμ λν μ°Έμ‘°)κ° λ λλ§ κ°μ λμΌνκ² μ μ§λ©λλ€. μ΄λ μ¬ λ λλ§ν μ§ μ¬λΆλ₯Ό κ²°μ νκΈ° μν΄ μ격ν λμΌμ± κ²μ¬μ μμ‘΄νλ μ»΄ν¬λνΈλ₯Ό μ΅μ ννλ λ° λ§€μ° μ€μν©λλ€. λμΌν ν¨μ IDλ₯Ό μ μ§ν¨μΌλ‘μ¨, useCallback
μ λΆνμν μ¬ λ λλ§μ λ°©μ§νκ³ μ λ°μ μΈ μ±λ₯μ ν₯μμν΅λλ€.
μ€μ μ¬λ‘: κΈλ‘λ² μ ν리μΌμ΄μ νμ₯
κΈλ‘λ² μ¬μ©μλ₯Ό μν μ ν리μΌμ΄μ μ κ°λ°ν λ, μ±λ₯μ λμ± μ€μν΄μ§λλ€. λ‘λ© μκ°μ΄ λ리거λ, μνΈ μμ©μ΄ λ리면 νΉν μΈν°λ· μ°κ²°μ΄ λλ¦° μ§μμμ μ¬μ©μ κ²½νμ ν° μν₯μ λ―ΈμΉ μ μμ΅λλ€.
- κ΅μ ν(i18n): μ¬μ©μμ λ‘μΌμΌμ λ°λΌ λ μ§μ μ«μλ₯Ό νμννλ ν¨μλ₯Ό μμν΄ λ³΄μΈμ.
useCallback
μΌλ‘ μ΄ ν¨μλ₯Ό λ©λͺ¨μ΄μ μ΄μ νλ©΄ λ‘μΌμΌμ΄ μμ£Ό λ³κ²½λμ§ μμ λ λΆνμν μ¬ λ λλ§μ λ°©μ§ν μ μμ΅λλ€. λ‘μΌμΌμ μ’ μμ±μ΄ λ©λλ€. - λλ λ°μ΄ν° μΈνΈ: ν μ΄λΈ λλ λͺ©λ‘μ λλ λ°μ΄ν° μΈνΈλ₯Ό νμν λ, νν°λ§, μ λ ¬ λ° νμ΄μ§ λ§€κΉμ λ΄λΉνλ ν¨μλ₯Ό λ©λͺ¨μ΄μ μ΄μ νλ©΄ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
- μ€μκ° νμ : μ¨λΌμΈ λ¬Έμ νΈμ§κΈ°μ κ°μ νμ μ ν리μΌμ΄μ μμ, μ¬μ©μ μ λ ₯ λ° λ°μ΄ν° λκΈ°νλ₯Ό μ²λ¦¬νλ ν¨μλ₯Ό λ©λͺ¨μ΄μ μ΄μ νλ©΄ μ§μ° μκ°μ μ€μ΄κ³ μλ΅μ±μ ν₯μμν¬ μ μμ΅λλ€.
useCallback
μ¬μ©μ λν λͺ¨λ² μ¬λ‘
- νμ λͺ¨λ μ’
μμ±μ ν¬ν¨ν©λλ€:
useCallback
ν¨μ λ΄μμ μ¬μ©λ λͺ¨λ λ³μλ₯Ό μ’ μμ± λ°°μ΄μ ν¬ν¨νλμ§ λ€μ νμΈνμμμ€. React.memo
μ ν¨κ» μ¬μ©: μ΅μ μ μ±λ₯ ν₯μμ μν΄useCallback
μReact.memo
μ ν¨κ» μ¬μ©νμμμ€.- μ½λλ₯Ό λ²€μΉλ§νΉν©λλ€: ꡬν μ νμ
useCallback
μ μ±λ₯ μν₯μ μΈ‘μ νμμμ€. - ν¨μλ₯Ό μκ³ μ§μ€μ μΌλ‘ μ μ§ν©λλ€: λ μκ³ μ§μ€μ μΈ ν¨μλ λ©λͺ¨μ΄μ μ΄μ νκ³ μ΅μ ννκΈ°κ° λ μ½μ΅λλ€.
- λ¦°ν°λ₯Ό μ¬μ©νλ κ²μ κ³ λ €νμμμ€: λ¦°ν°λ
useCallback
νΈμΆμμ λλ½λ μ’ μμ±μ μλ³νλ λ° λμμ΄ λ μ μμ΅λλ€.
κ²°λ‘
useCallback
μ React μ ν리μΌμ΄μ
μμ μ±λ₯μ μ΅μ ννκΈ° μν μ μ©ν λꡬμ
λλ€. κ·Έ λͺ©μ , μ΄μ λ° μ€μ μ μ© μ¬λ‘λ₯Ό μ΄ν΄ν¨μΌλ‘μ¨, λΆνμν μ¬ λ λλ§μ ν¨κ³Όμ μΌλ‘ λ°©μ§νκ³ μ λ°μ μΈ μ¬μ©μ κ²½νμ ν₯μμν¬ μ μμ΅λλ€. κ·Έλ¬λ useCallback
μ μ μ€νκ² μ¬μ©νκ³ μ€μ λ‘ μ±λ₯μ΄ ν₯μλκ³ μλμ§ νμΈνκΈ° μν΄ μ½λλ₯Ό λ²€μΉλ§νΉνλ κ²μ΄ μ€μν©λλ€. μ΄ κ°μ΄λμ μμ½λ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ©΄, ν¨μ λ©λͺ¨μ΄μ μ΄μ
μ λ§μ€ν°νκ³ κΈλ‘λ² μ¬μ©μλ₯Ό μν λ ν¨μ¨μ μ΄κ³ λ°μμ±μ΄ λ°μ΄λ React μ ν리μΌμ΄μ
μ ꡬμΆν μ μμ΅λλ€.
μ±λ₯ λ³λͺ© νμμ μλ³νκΈ° μν΄ νμ React μ ν리μΌμ΄μ
μ νλ‘νμΌλ§νκ³ , ν΄λΉ λ³λͺ© νμμ ν¨κ³Όμ μΌλ‘ ν΄κ²°νκΈ° μν΄ useCallback
(λ° κΈ°ν μ΅μ ν κΈ°μ )μ μ λ΅μ μΌλ‘ μ¬μ©νλ κ²μ μμ§ λ§μμμ€.