해결된 질문
작성
·
218
1
useQuery 나 mutation같은걸 통해 데이터를 가져오는데 데이터 렌더링이랑 훅스랑겹치지않게 가장 함수끝부분에 배치해야된다해서 그렇게 배치했는데 data 의 null 값여부를 젤 밑에서 하니까 그위에 훅스들은 수동으로 null 값을 체크해야되는데 이런경우는 어떤식으로 하는게 좋을까요?
interface Props {
children?: React.ReactNode
}
const Comp: FC<Props> = () => {
const {p1, p2} = useParams()
if (!p1|| !p2) {
return <>loading error</>;
}
const {data} = useQuery({
queryKey: mykey,
queryFn: () => myfunc1(userId, codeId)
});
const {mutate} = useMutation({
mutationFn: async (data: CodeRequestEntity) => {
await myfunc2(data)
return true
}
})
if(!data){
return <>loading</>
}
const onClickConfirm = useCallback(() => {
mutate(data)
onClose()
}, [])
return (
<>
<Button variant={"outlined"} onClick={onClickConfirm}>예
</Button>
</>
);
};
export default Comp;
이런식으로 하게되면 분기문을통해 데이터 null 처리를 해서 분기문 밑어부터는 null 처리를 안해도되는데 null 처리를 가장 밑에 렌더링부분에 넣으면 그위에 훅스에선 데이터쓸때마다 null 처리해줘야되서 혹시 다른 방법 있을까요?
답변 1
2
지금같이 하시면 hooks 규칙 위반했다는 에러가 뜨게 됩니다(use보다 return이 더 위에 있으면 안 됨). 원래 훅들은 서로 별개의 존재들이라 훅들마다 별도로 체크해주는 게 맞습니다.