리액트의 라이프사이클은
constructor
>render
>componentDidMount
순으로 진행된다. 그런데, 나의 경우에는fetch
를componentDidMount
안에서 했기 때문에 그 전의render
에서는state
에 빈 값이 있을 수 밖에 없었고, 그러면 에러가 났다. 그래서 에러를 잡아주기 위해서는 데이터를 사용할 때 조건문을 걸어줄 필요가 있었다.
this.state = {
product: [],
}
render() {
return(
{product.length! == 0 ? product[0].color_name : null}
)
}
받아오는 데이터가 배열인 경우에 배열은 길이를 측정할 수 있으므로, 배열의 길이가 0인 아닌 경우라는 조건을 걸어주면 됐다.
this.state = {
product: {},
}
render() {
return(
{product.name && (
<ProductDetailLeft
refArr={[this.shoeDetailRef, this.reviewRef]}
product={product}
)}
)
}
true
이기 때문이다. 한참을 헤메다가 멘토님들의 도움을 받고, 매우 간단하게 해결해버렸다. 객체안의 특정 키를 하나 정해서 그 값의 유무로 비교하면 됐었다. 배열에서 사용한 삼항연산자도 필요없어서 논리연산자를 사용해 불필요하게 긴 코드를 짧게 만들었다.