[형식]
① 컴포넌트가 나타날 때 딱 1번만 함수가 호출
useEffect( () => {
}, [ ]);
② 특정 props가 바뀔 때마다 함수가 호출
useEffect( () => {
}, [ props ]);
useEffect 라는 Hook을 사용하여 할 수 있는 3가지 동작
[ ]로 설정하면 컴포넌트가 처음 나타날 때만 useEffect에 등록한 함수가 호출 한다.
useEffect 에서는 함수를 반환 할 수 있는데 이를 cleanup 함수라고 부른다.
cleanup 함수는 useEffect 에 대한 뒷정리를 해준다고 이해하면 되는데,
[ ] 안에 내용이 비어 있는 경우에는 컴포넌트가 사라질 때 cleanup 함수가 호출된다.
거의 사용x
값이 변하기만 하면 실행 된다.
불필요한 사용이 너무 많다.
useEffect( () => {
console.log('안녕하세요')
})
마운트될 때 1번만 수행
useEffect( () => {
console.log('안녕하세요')
}, [])
name의 값이 바뀔때만 수행
useEffect( () => {
console.log('안녕하세요')
},[ name ])
HTML5에서 추가된 기술로 로컬스토리지와 세션스토리지로 구분된다.
특징
종류
로컬스토리지 (localStorage) - 클라이언트에 대한 정보를 영구적으로 저장
세션스토리지 (sessionStorage) - 세션 종료 시(브라우저 닫을 경우) 클라이언트에 대한 정보 삭제
장점
단점
서버에 새로고침 없이 요청할 수 있게 도와준다.
서버로 네트워크 요청을 보내고 응답을 받을 수 있도록 도와준다.
fetch(url)
.then(콜백) - 응답 성공
.catch(콜백) - 응답 실패
axios.get(url)
.then(콜백) - 응답 성공
.catch(콜백) - 응답 실패
npm install axios / yarn add axios
https://jsonplaceholder.typicode.com/
useEffect(() => {
fetch('https://jsonplaceholder.typicode.com/posts')
.then(res => res.json())
.then(res => setData(res))
}, [])
useEffect(() => {
axios.get('https://jsonplaceholder.typicode.com/posts')
.then(res => setData(res.data))
}, [])
useEffect(() => {
const getData = async() => {
const res = await fetch('https://jsonplaceholder.typicode.com/posts')
const data = await res.json()
setData(data)
}
getData()
}, [])
useEffect(() => {
const getData = async() => {
const res = await axios.get('https://jsonplaceholder.typicode.com/posts')
setData(res.data)
}
getData()
}, [])
memoization?