React useCallbackã®å æ¬çãªã¬ã€ããReactã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åããããã®é¢æ°ã¡ã¢åæè¡ã解説ããŸããäžèŠãªåã¬ã³ããªã³ã°ãé²ããå¹çãåäžãããæ¹æ³ãåŠã³ãŸãããã
React useCallback: ããã©ãŒãã³ã¹æé©åã®ããã®é¢æ°ã¡ã¢åããã¹ã¿ãŒãã
Reactéçºã®é åã§ã¯ãã¹ã ãŒãºã§ã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒäœéšãæäŸããããã«ããã©ãŒãã³ã¹ã®æé©åãæãéèŠã§ãããããéæããããã«Reactéçºè
ã®æŠåšãšãªã匷åãªããŒã«ã®äžã€ãã颿°ã®ã¡ã¢åãå¯èœã«ããReactããã¯ã§ããuseCallback
ã§ãããã®å
æ¬çãªã¬ã€ãã§ã¯ãuseCallback
ã®è€éããæãäžãããã®ç®çãå©ç¹ããããŠReactã³ã³ããŒãã³ãã®æé©åã«ãããå®è·µçãªå¿çšãæ¢ããŸãã
颿°ã¡ã¢åã®çè§£
ã¡ã¢åã®æ žå¿ã¯ãé«ã³ã¹ããªé¢æ°åŒã³åºãã®çµæããã£ãã·ã¥ããåãå
¥åãå床çºçãããšãã«ãã£ãã·ã¥ãããçµæãè¿ãæé©åæè¡ã§ããReactã®æèã«ãããŠãuseCallback
ã«ãã颿°ã®ã¡ã¢åã¯ãã¬ã³ããªã³ã°éã§é¢æ°ã®åäžæ§ãä¿æããããšã«çŠç¹ãåœãŠããã®é¢æ°ã«äŸåããåã³ã³ããŒãã³ãã®äžèŠãªåã¬ã³ããªã³ã°ãé²ããŸãã
useCallback
ããªãå Žåã颿°ã®ããžãã¯ãäŸåé¢ä¿ãå€ãããªããŠãã颿°ã³ã³ããŒãã³ããã¬ã³ããªã³ã°ããããã³ã«æ°ãã颿°ã€ã³ã¹ã¿ã³ã¹ãäœæãããŸããããã«ããããããã®é¢æ°ãpropsãšããŠåã³ã³ããŒãã³ãã«æž¡ãããéã«ããã©ãŒãã³ã¹ã®ããã«ããã¯ãšãªããåã³ã³ããŒãã³ããäžå¿
èŠã«åã¬ã³ããªã³ã°ãããåå ãšãªããŸãã
useCallback
ããã¯ã®ç޹ä»
useCallback
ããã¯ã¯ãReactã®é¢æ°ã³ã³ããŒãã³ãã§é¢æ°ãã¡ã¢åããæ¹æ³ãæäŸããŸããããã¯2ã€ã®åŒæ°ãåãåããŸã:
- ã¡ã¢åããã颿°ã
- äŸåé¢ä¿ã®é åã
useCallback
ã¯ãäŸåé
åå
ã®ããããã®äŸåé¢ä¿ãã¬ã³ããªã³ã°éã§å€æŽãããå Žåã«ã®ã¿å€æŽãããã颿°ã®ã¡ã¢åãããããŒãžã§ã³ãè¿ããŸãã
以äžã¯åºæ¬çãªäŸã§ã:
import React, { useCallback } from 'react';
function MyComponent() {
const handleClick = useCallback(() => {
console.log('Button clicked!');
}, []); // 空ã®äŸåé
å
return ;
}
export default MyComponent;
ãã®äŸã§ã¯ãhandleClick
颿°ã¯ç©ºã®äŸåé
åïŒ[]
ïŒãæã€useCallback
ã䜿çšããŠã¡ã¢åãããŠããŸããããã¯ãhandleClick
颿°ãã³ã³ããŒãã³ãã®ååã¬ã³ããªã³ã°æã«äžåºŠã ãäœæããããã®åŸã®åã¬ã³ããªã³ã°ã§ããã®åäžæ§ãç¶æãããããšãæå³ããŸãããã¿ã³ã®onClick
ããããã¯åžžã«åã颿°ã€ã³ã¹ã¿ã³ã¹ãåãåãããããã¿ã³ã³ã³ããŒãã³ãã®äžèŠãªåã¬ã³ããªã³ã°ãé²ããŸãïŒãããããã¡ã¢åã®æ©æµãåããããè€éãªã³ã³ããŒãã³ãã§ãã£ãå ŽåïŒã
useCallback
ã䜿çšããã¡ãªãã
- äžèŠãªåã¬ã³ããªã³ã°ã®é²æ¢:
useCallback
ã®äž»ãªå©ç¹ã¯ãåã³ã³ããŒãã³ãã®äžèŠãªåã¬ã³ããªã³ã°ãé²ãããšã§ããpropãšããŠæž¡ããã颿°ãã¬ã³ããªã³ã°ã®ãã³ã«å€ãããšãå ã«ãªãããŒã¿ãå€ãã£ãŠããªããŠãåã³ã³ããŒãã³ãã®åã¬ã³ããªã³ã°ãããªã¬ãŒãããŸããuseCallback
ã§é¢æ°ãã¡ã¢åããããšã§ãåã颿°ã€ã³ã¹ã¿ã³ã¹ãæž¡ãããããã«ãªããäžèŠãªåã¬ã³ããªã³ã°ãåé¿ã§ããŸãã - ããã©ãŒãã³ã¹ã®æé©å: åã¬ã³ããªã³ã°ã®åæ°ãæžããããšã§ã
useCallback
ã¯ç¹ã«æ·±ããã¹ããããã³ã³ããŒãã³ããæã€è€éãªã¢ããªã±ãŒã·ã§ã³ã«ãããŠãå€§å¹ ãªããã©ãŒãã³ã¹åäžã«è²¢ç®ããŸãã - ã³ãŒãã®å¯èªæ§ã®åäž:
useCallback
ã䜿çšãããšã颿°ã®äŸåé¢ä¿ãæç€ºçã«å®£èšããããšã§ãã³ãŒããããèªã¿ããããä¿å®ãããããªããŸããããã«ãããä»ã®éçºè ã颿°ã®æ¯ãèããæœåšçãªå¯äœçšãçè§£ãããããªããŸãã
å®è·µçãªäŸãšãŠãŒã¹ã±ãŒã¹
äŸ1: ãªã¹ãã³ã³ããŒãã³ãã®æé©å
芪ã³ã³ããŒãã³ããListItem
ãšããåã³ã³ããŒãã³ãã䜿çšããŠã¢ã€ãã ã®ãªã¹ããã¬ã³ããªã³ã°ããã·ããªãªãèããŠã¿ãŸããããListItem
ã³ã³ããŒãã³ãã¯ãåã¢ã€ãã ã®ã¯ãªãã¯ã€ãã³ããåŠçãã颿°ã§ããonItemClick
ãããããåãåããŸãã
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
ã§ã©ãããããŠãããããã«ããpropsã®æµ
ãæ¯èŒãè¡ãããç¹ã§ãã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: ã°ããŒãã«æ€çŽ¢ããŒã®æé©å
ããŸããŸãªèšèªãæåã»ããã§ã®æ€çŽ¢ãåŠçããå¿ èŠãããã°ããŒãã«ãªeã³ããŒã¹ãã©ãããã©ãŒã ã®ãŠã§ããµã€ããæ§ç¯ããŠãããšæ³åããŠãã ãããæ€çŽ¢ããŒã¯è€éãªã³ã³ããŒãã³ãã§ããããã®ããã©ãŒãã³ã¹ãæé©åããããšèããŠããŸãã
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
ããããïŒèŠªã³ã³ããŒãã³ãã§ãã¡ã¢åãããŠãããšä»®å®ïŒã«äŸåããŸããããã«ãããæ€çŽ¢é¢æ°ã¯æ€çŽ¢èªã倿Žããããšãã«ã®ã¿åäœæãããæ€çŽ¢ããŒã³ã³ããŒãã³ãããã³ãããæã€å¯èœæ§ã®ããåã³ã³ããŒãã³ãã®äžèŠãªåã¬ã³ããªã³ã°ãé²ããŸããããã¯ãonSearch
ãå€§èŠæš¡ãªè£œåã«ã¿ãã°ã®ãã£ã«ã¿ãªã³ã°ã®ãããªèšç®ã³ã¹ãã®é«ãæäœãããªã¬ãŒããå Žåã«ç¹ã«éèŠã§ãã
useCallback
ã䜿çšãã¹ãæ
useCallback
ã¯åŒ·åãªæé©åããŒã«ã§ãããè³¢æã«äœ¿çšããããšãéèŠã§ããuseCallback
ãé床ã«äœ¿çšãããšãã¡ã¢åããã颿°ã®äœæãšç®¡çã®ãªãŒããŒãããã«ãããå®éã«ã¯ããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸãã
以äžã¯useCallback
ã䜿çšãã¹ãæã®ã¬ã€ãã©ã€ã³ã§ã:
React.memo
ã§ã©ãããããåã³ã³ããŒãã³ãã«é¢æ°ãpropsãšããŠæž¡ãå Žå: ãããuseCallback
ã®æãäžè¬çã§å¹æçãªãŠãŒã¹ã±ãŒã¹ã§ãã颿°ãã¡ã¢åããããšã§ãåã³ã³ããŒãã³ããäžå¿ èŠã«åã¬ã³ããªã³ã°ãããã®ãé²ãããšãã§ããŸããuseEffect
ããã¯å ã§é¢æ°ã䜿çšããå Žå: 颿°ãuseEffect
ããã¯ã®äŸåé¢ä¿ãšããŠäœ¿çšãããå ŽåãuseCallback
ã§ã¡ã¢åããããšã§ããšãã§ã¯ããã¬ã³ããªã³ã°ã®ãã³ã«äžå¿ èŠã«å®è¡ãããã®ãé²ãããšãã§ããŸããããã¯ã颿°ã®åäžæ§ããã®äŸåé¢ä¿ã倿Žããããšãã«ã®ã¿å€æŽãããããã§ãã- èšç®ã³ã¹ãã®é«ã颿°ãæ±ãå Žå: 颿°ãè€éãªèšç®ãæäœãå®è¡ããå Žåã
useCallback
ã§ã¡ã¢åããããšã§ãçµæããã£ãã·ã¥ããŠå€§å¹ ãªåŠçæéãç¯çŽã§ããŸãã
éã«ã以äžã®ç¶æ³ã§ã¯useCallback
ã®äœ¿çšãé¿ããŠãã ãã:
- äŸåé¢ä¿ã®ãªãåçŽãªé¢æ°ã®å Žå: åçŽãªé¢æ°ãã¡ã¢åãããªãŒããŒããããããã®å©ç¹ãäžåãå¯èœæ§ããããŸãã
- 颿°ã®äŸåé¢ä¿ãé »ç¹ã«å€æŽãããå Žå: 颿°ã®äŸåé¢ä¿ãåžžã«å€åããŠããå Žåãã¡ã¢åããã颿°ã¯ã¬ã³ããªã³ã°ã®ãã³ã«åäœæãããããã©ãŒãã³ã¹äžã®å©ç¹ãç¡å¹ã«ãªããŸãã
- ããã©ãŒãã³ã¹ãåäžãããäžç¢ºããªå Žå:
useCallback
ã䜿çšããååŸã§åžžã«ã³ãŒãããã³ãããŒã¯ããå®éã«ããã©ãŒãã³ã¹ãåäžããŠããããšã確èªããŠãã ããã
èœãšã穎ãšããããééã
- äŸåé¢ä¿ã®å¿ã:
useCallback
ã䜿çšããéã«ããããééãã¯ã颿°ã®ãã¹ãŠã®äŸåé¢ä¿ãäŸåé åã«å«ããã®ãå¿ããããšã§ããããã¯å€ãã¯ããŒãžã£ãäºæããªãæ¯ãèãã«ã€ãªããå¯èœæ§ããããŸãã颿°ãã©ã®å€æ°ã«äŸåããŠããããåžžã«æ éã«æ€èšããããããäŸåé åã«å«ããŠãã ããã - éå°ãªæé©å: åè¿°ã®éãã
useCallback
ãé床ã«äœ¿çšãããšããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸããæ¬åœã«å¿ èŠãªå ŽåããããŠããã©ãŒãã³ã¹ãåäžãããŠãã蚌æ ãããå Žåã«ã®ã¿äœ¿çšããŠãã ããã - äžæ£ç¢ºãªäŸåé å: äŸåé¢ä¿ãæ£ããããšã確èªããããšã¯éåžžã«éèŠã§ããäŸãã°ã颿°å ã§ç¶æ 倿°ã䜿çšããŠããå Žåã¯ãç¶æ ã倿Žããããšãã«ãã®é¢æ°ãæŽæ°ãããããã«ãäŸåé åã«å«ããå¿ èŠããããŸãã
useCallback
ã®ä»£æ¿ææ®µ
useCallback
ã¯åŒ·åãªããŒã«ã§ãããReactã§é¢æ°ã®ããã©ãŒãã³ã¹ãæé©åããããã®ä»£æ¿ã¢ãããŒããååšããŸã:
React.memo
: äŸã§ç€ºããããã«ãåã³ã³ããŒãã³ããReact.memo
ã§ã©ããããããšã§ãpropsã倿ŽãããŠããªãå Žåã«åã¬ã³ããªã³ã°ãããã®ãé²ãããšãã§ããŸããããã¯ãåã³ã³ããŒãã³ãã«æž¡ããã颿°propsãå®å®ããŠããããšãä¿èšŒããããã«ããã°ãã°useCallback
ãšçµã¿åãããŠäœ¿çšãããŸããuseMemo
:useMemo
ããã¯ã¯useCallback
ã«äŒŒãŠããŸããã颿°èªäœã§ã¯ãªãã颿°åŒã³åºãã®*çµæ*ãã¡ã¢åããŸããããã¯ãé«ã³ã¹ããªèšç®ãããŒã¿å€æãã¡ã¢åããã®ã«åœ¹ç«ã¡ãŸãã- ã³ãŒãåå²: ã³ãŒãåå²ã¯ãã¢ããªã±ãŒã·ã§ã³ããªã³ããã³ãã§ããŒããããå°ããªãã£ã³ã¯ã«åå²ããããšãå«ã¿ãŸããããã«ãããåæããŒãæéãšå šäœçãªããã©ãŒãã³ã¹ãåäžããŸãã
- ä»®æ³å: ãŠã£ã³ããŠã€ã³ã°ãªã©ã®ä»®æ³åæè¡ã¯ã衚瀺ãããŠããã¢ã€ãã ã®ã¿ãã¬ã³ããªã³ã°ããããšã§ãå€§èŠæš¡ãªããŒã¿ãªã¹ããã¬ã³ããªã³ã°ããéã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
useCallback
ãšåç
§ã®ç䟡æ§
useCallback
ã¯ãã¡ã¢åããã颿°ã®åç
§ã®ç䟡æ§ãä¿èšŒããŸããããã¯ã颿°ã®ã¢ã€ãã³ãã£ãã£ïŒã€ãŸããã¡ã¢ãªå
ã®é¢æ°ãžã®åç
§ïŒããäŸåé¢ä¿ã倿Žãããªãéããã¬ã³ããªã³ã°éã§åããŸãŸã§ããããšãæå³ããŸããããã¯ãåã¬ã³ããªã³ã°ãããã©ãããæ±ºå®ããããã«å³å¯ãªç䟡æ§ãã§ãã¯ã«äŸåããã³ã³ããŒãã³ããæé©åããäžã§éåžžã«éèŠã§ããåã颿°ã¢ã€ãã³ãã£ãã£ãç¶æããããšã§ãuseCallback
ã¯äžèŠãªåã¬ã³ããªã³ã°ãé²ããå
šäœçãªããã©ãŒãã³ã¹ãåäžãããŸãã
å®äžçã®äŸ: ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ãžã®ã¹ã±ãŒãªã³ã°
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã®ã¢ããªã±ãŒã·ã§ã³ãéçºããå Žåãããã©ãŒãã³ã¹ã¯ããã«éèŠã«ãªããŸããç¹ã«ã€ã³ã¿ãŒãããæ¥ç¶ãé ãå°åã§ã¯ãèªã¿èŸŒã¿æéãé ãã£ãããã€ã³ã¿ã©ã¯ã·ã§ã³ãéãã£ãããããšããŠãŒã¶ãŒäœéšã«å€§ããªåœ±é¿ãäžããŸãã
- åœéå (i18n): ãŠãŒã¶ãŒã®ãã±ãŒã«ã«å¿ããŠæ¥ä»ãæ°å€ããã©ãŒããããã颿°ãæ³åããŠãã ããããã®é¢æ°ã
useCallback
ã§ã¡ã¢åããããšã§ããã±ãŒã«ãé »ç¹ã«å€æŽãããªãå Žåã«äžèŠãªåã¬ã³ããªã³ã°ãé²ãããšãã§ããŸãããã®å Žåããã±ãŒã«ãäŸåé¢ä¿ã«ãªããŸãã - å€§èŠæš¡ãªããŒã¿ã»ãã: ããŒãã«ããªã¹ãã§å€§èŠæš¡ãªããŒã¿ã»ããã衚瀺ããå Žåããã£ã«ã¿ãªã³ã°ããœãŒããããŒãžããŒã·ã§ã³ãæ åœãã颿°ãã¡ã¢åããããšã§ãããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
- ãªã¢ã«ã¿ã€ã ã³ã©ãã¬ãŒã·ã§ã³: ãªã³ã©ã€ã³ããã¥ã¡ã³ããšãã£ã¿ãªã©ã®å ±åäœæ¥ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããŠãŒã¶ãŒå ¥åãããŒã¿åæãåŠçãã颿°ãã¡ã¢åããããšã§ãã¬ã€ãã³ã·ãåæžããå¿çæ§ãåäžãããããšãã§ããŸãã
useCallback
ã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
- åžžã«ãã¹ãŠã®äŸåé¢ä¿ãå«ãã: äŸåé
åã«
useCallback
颿°å ã§äœ¿çšããããã¹ãŠã®å€æ°ãå«ãŸããŠããããšãå確èªããŠãã ããã React.memo
ãšå ±ã«äœ¿çšãã: æé©ãªããã©ãŒãã³ã¹åäžãåŸãããã«ãuseCallback
ãReact.memo
ãšçµã¿åãããŠãã ããã- ã³ãŒãããã³ãããŒã¯ãã: å®è£
ååŸã§
useCallback
ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã枬å®ããŠãã ããã - 颿°ãå°ãããçŠç¹ãçµã£ããã®ã«ä¿ã€: å°ãããããçŠç¹ãçµã£ã颿°ã¯ãã¡ã¢åãæé©åã容æã§ãã
- ãªã³ã¿ãŒã®äœ¿çšãæ€èšãã: ãªã³ã¿ãŒã¯ã
useCallback
åŒã³åºãã§äžè¶³ããŠããäŸåé¢ä¿ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
çµè«
useCallback
ã¯ãReactã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åããããã®è²ŽéãªããŒã«ã§ãããã®ç®çãå©ç¹ãå®è·µçãªå¿çšãçè§£ããããšã§ãäžèŠãªåã¬ã³ããªã³ã°ã广çã«é²ããå
šäœçãªãŠãŒã¶ãŒäœéšãåäžãããããšãã§ããŸãããã ããuseCallback
ãè³¢æã«äœ¿çšããå®éã«ããã©ãŒãã³ã¹ãåäžããŠããããšã確èªããããã«ã³ãŒãããã³ãããŒã¯ããããšãäžå¯æ¬ ã§ãããã®ã¬ã€ãã§æŠèª¬ãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ã颿°ã¡ã¢åããã¹ã¿ãŒããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«ãããå¹ççã§ã¬ã¹ãã³ã·ããªReactã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã
ããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããã«ãåžžã«Reactã¢ããªã±ãŒã·ã§ã³ããããã¡ã€ãªã³ã°ãããããã®ããã«ããã¯ã«å¹æçã«å¯ŸåŠããããã«useCallback
ïŒããã³ãã®ä»ã®æé©åæè¡ïŒãæŠç¥çã«äœ¿çšããããšãå¿ããªãã§ãã ããã