Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 정렬
- typscript
- nextjs
- 버블정렬
- 해쉬
- never타입
- 큐
- 알고리즘
- react
- cookie
- 스택
- JavaScript
- nestjs
- 블로그만들기
- aws lightsail
- 투포인터
- textarea autosize
- isNaN
- 빅오
- next.js
- 그리디
- Algorithm
- NextAuth
- js알고리즘
- tailwindcss
- 슬라이딩윈도우
- styled-components
- react-query
- 라이프사이클
- TypeScript
Archives
- Today
- Total
far
[React] Checkbox와 API연결하기 (첫 클릭시 Boolean 전환 안되는 현상 해결) 본문
Checkbox와 API를 연결할 때 첫 클릭시 Boolean이 전환되지 않는 경우가 생겼는데, 생각보다 해결이 안돼서 애를 먹었다.
tsx파일
// Checkbox 부분을 제외한 나머지 전부 생략
// props로 todo 데이터를 받아오는 상황
const TodoList = ({ todo }) => {
const [isCheck, setIsCheck] = useState(todo.isCompleted); // 서버로부터 boolean값을 받음
const todoCheckbox = useCallback(() => {
setIsCheck(!isCheck);
}, [isCheck]);
useEffect(() => {
axios({
// ... 생략
data: {
isCompleted: isCheck,
},
});
}, [isCheck])
return (
<input type="checkbox" className="mr-2" checked={isCheck} onChange={todoCheckbox} />
)
};
나의 경우 계속 todoCheckbox부분에서 axios를 쏴주고 있었는데 이러면 첫 클릭시 어떤 방법을 써도 boolean이 변하지 않았다. 그러니까 서버에서 true를 받아온다면 첫 클릭시 isCheck가 false가 되어야 하는데 true가 나왔다.
뭐가 문제인가 해서 이것저것 다 해본 결과 해결 방법은 되게 간단했다. useEffect에서 isCheck를 []안에 넣어주고 데이터를 fetch해주면 끝이었다. isCheck가 변할 때 마다 리렌더링이 되기 때문이다.
기초적인 부분인데 최근에 리액트를 좀 안만졌다고 해결법이 바로 안떠오르다니.. 싶었던 작업이었다.
'React > 기록' 카테고리의 다른 글
[React + websocket] Sock.js와 Stomp.js로 간단한 채팅 구현하기 (0) | 2023.04.28 |
---|---|
[React + Typescript] Modal창 만들기 (+ 스크롤 고정) (0) | 2023.04.18 |
[React + Typescript] Intersection Observer로 간단한 스크롤 애니메이션 만들기 (텍스트 가로 이동, Fade In/Out) (0) | 2023.03.30 |
[React] Key에 대하여 (Map의 key props) (0) | 2023.03.15 |
[React] 리액트 메모이제이션 훅 (0) | 2023.03.13 |
Comments