
Detail ํ์ด์ง์์ 2์ด ํ ๋ฐ์ค๊ฐ ์ฌ๋ผ์ง๊ฒ ๋ง๋ค๊ธฐ ๐
๋์ ์ธ UI ๋ง๋ค ๋์ ๊ธฐ๋ณธ ์์น:
1. UI ์ํ๋ฅผ ์ ์ฅํ state ๋ง๋ค๊ธฐ ๐ง
2. state์ ๋ฐ๋ผ UI๊ฐ ์ด๋ป๊ฒ ๋ณด์ผ์ง ์์ฑํ๊ธฐ ๐จ
function Detail(){
let [alert, setAlert] = useState(true)
useEffect(()=>{
setTimeout(()=>{ setAlert(false) }, 2000)
}, [])
return (
{
alert == true
? <div className="alert alert-warning">
2์ด์ด๋ด ๊ตฌ๋งค์ ํ ์ธ
</div>
: null
}
)
}
alert state๊ฐ true๋ฉด ๋
ธ๋๋ฐ์ค ๋ณด์ โ
false๋ฉด ์๋ณด์ โuseEffect์ setTimeout์ผ๋ก 2์ด ํ ์๋ ์จ๊น ์ฒ๋ฆฌ โฐuseEffect(()=>{
์คํํ ์ฝ๋
}, [count])
[๋ณ์๋ช
] ํํ๋ก ์กฐ๊ฑด ์ค์ ๐count ๋ณ์๊ฐ ๋ณํ ๋๋ง useEffect ์คํ ๐ชuseEffect(()=>{
์คํํ ์ฝ๋
}, [])
[] ์ฌ์ฉ ์ ์ปดํฌ๋ํธ mount ์ 1ํ๋ง ์คํ ๐ฏuseEffect(()=>{
๊ทธ ๋ค์ ์คํ๋จ
return ()=>{
์ฌ๊ธฐ์๋๊ฒ ๋จผ์ ์คํ๋จ
}
}, [count])
useEffect(()=>{
let a = setTimeout(()=>{ setAlert(false) }, 2000)
return ()=>{
clearTimeout(a)
}
}, [])
์ ํ์ํ๊ฐ? ๐ค
setTimeout ์ฌ์ฉ ์๋ง๋ค ๋ธ๋ผ์ฐ์ ์ ํ์ด๋จธ ์์ฑ ๐clearTimeout()์ผ๋ก ๊ธฐ์กด ํ์ด๋จธ ์ ๊ฑฐ ํ ์ ํ์ด๋จธ ์์ฑ โป๏ธClean up function ์ฃผ์ ์ฉ๋:
useEffect(()=>{ ์คํํ ์ฝ๋ })
useEffect(()=>{ ์คํํ ์ฝ๋ }, [])
useEffect(()=>{
return ()=>{
์คํํ ์ฝ๋
}
})
useEffect(()=>{
return ()=>{
์คํํ ์ฝ๋
}
}, [])
useEffect(()=>{
์คํํ ์ฝ๋
}, [state1])
input์์ ์ซ์๊ฐ ์๋ ๊ฐ ์ ๋ ฅ ์ ๊ฒฝ๊ณ ๋ฉ์์ง ์ถ๋ ฅํ๊ธฐ โ ๏ธ
<input> ํ๋ ๋ง๋ค๊ธฐ ๐// ์ฌ๋ฌ ๊ฐ์ ์์กด์ฑ
useEffect(()=>{
console.log('name ๋๋ age๊ฐ ๋ณ๊ฒฝ๋จ')
}, [name, age])
// ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์์กด์ฑ์ผ๋ก ์ฌ์ฉํ ๋ ์ฃผ์์
const user = {name: 'John', age: 25}
useEffect(()=>{
// ๊ฐ์ฒด ์ฐธ์กฐ๊ฐ ๋ฐ๋ ๋๋ง๋ค ์คํ๋จ
}, [user]) // ์ฃผ์: ๋งค๋ฒ ์๋ก์ด ๊ฐ์ฒด๋ผ๋ฉด ๊ณ์ ์คํ๋จ
// debounce ํจํด์ผ๋ก API ํธ์ถ ์ต์ ํ
useEffect(()=>{
const timer = setTimeout(()=>{
// API ํธ์ถ
fetchSearchResults(searchTerm)
}, 500)
return ()=> clearTimeout(timer)
}, [searchTerm])
// useEffect: ๋น๋๊ธฐ์ ์คํ (ํ๋ฉด ๋ ๋๋ง ํ)
useEffect(()=>{
// DOM ์
๋ฐ์ดํธ ํ ์คํ
})
// useLayoutEffect: ๋๊ธฐ์ ์คํ (ํ๋ฉด ๋ ๋๋ง ์ )
import { useLayoutEffect } from 'react'
useLayoutEffect(()=>{
// DOM ์
๋ฐ์ดํธ ์ ์คํ (๊น๋นก์ ๋ฐฉ์ง)
})
useEffect(()=>{
// ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก
const handleScroll = () => {
console.log('์คํฌ๋กค ์ค...')
}
window.addEventListener('scroll', handleScroll)
// ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ ๋ฆฌ
return () => {
window.removeEventListener('scroll', handleScroll)
}
}, [])
๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐฉ์ง๋ฅผ ์ํ ํ์ ํจํด ๐ก๏ธ