Custom Hooks
1. Custom Hooksμ΄λ?
(1) Custom Hooksμ μ¬μ©νλ κ²½μ°
(2) Custom Hooksμ μ₯μ
2. Custom Hooks μ¬μ© μμ
// FriendStatus : μΉκ΅¬κ° onlineμΈμ§ offlineμΈμ§ returnνλ μ»΄ν¬λνΈ function FriendStatus(props) { const [isOnline, setIsOnline] = useState(null); useEffect(() => { function handleStatusChange(status) { setIsOnline(status.isOnline); } ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange); return () => { ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange); }; }); if (isOnline === null) { return 'Loading...'; } return isOnline ? 'Online' : 'Offline'; } // FriendListItem : μΉκ΅¬κ° onlineμΌ λ μ΄λ‘μμΌλ‘ νμνλ μ»΄ν¬λνΈ function FriendListItem(props) { const [isOnline, setIsOnline] = useState(null); useEffect(() => { function handleStatusChange(status) { setIsOnline(status.isOnline); } ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange); return () => { ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange); }; }); return ( <li style={{ color: isOnline ? 'green' : 'black' }}> {props.friend.name} </li> ); }function FriendStatus(props) { const isOnline = useFriendStatus(props.friend.id); // useFriendStatus Hook μ μ© if (isOnline === null) { return 'Loading...'; } return isOnline ? 'Online' : 'Offline'; } function FriendListItem(props) { const isOnline = useFriendStatus(props.friend.id); return ( <li style={{ color: isOnline ? 'green' : 'black' }}> {props.friend.name} </li> ); }
Last updated