728x90
React useEffect hook에서 비동기 함수를 지원하지 않기 때문에 다음과 같이 구현해야 한다.
useEffect((): void => {
const fetchData = async (): Promise<void> => {
const data = await fetch(`https://jsonplaceholder.typicode.com/posts/${id}`)
if (data.ok) {
const json = await data.json() as string
console.log(json)
}
}
void fetchData()
}, [id])
그냥 Promise 체이닝을 사용하는 방법도 있다.
useEffect(() => {
fetch(`https://jsonplaceholder.typicode.com/posts/${id}`)
.then(async response => {
if (!response.ok) {
throw new Error('Network response was not ok')
}
return await response.json() as string
})
.then(json => {
console.log(json)
})
.catch(error => {
console.error('There was a problem with the fetch operation:', error)
})
}, [id])
구글에 "useEffect async"를 검색해도 관련 자료가 쏟아지는데 typescript 예시는 잘 안 보여서 기록해 둔다.
728x90
'Programming > Frontend' 카테고리의 다른 글
[pnpm] windows pnpm 업데이트 (0) | 2024.04.11 |
---|---|
[npm] windows npm 업데이트 하기 (0) | 2024.04.11 |
[css] 모달을 항상 가운데로 정렬하기 (0) | 2021.08.15 |
offsetWidth, scrollWidth, clientWidth 차이 (0) | 2021.06.08 |
[css] 티스토리 스킨 적용 시 소스코드 가운데 정렬되는 문제 (2) | 2020.08.03 |
댓글