![article thumbnail image](https://blog.kakaocdn.net/dn/l15Xc/btsLP08n5E0/YtpJSLWHl7ktewsqr2NREK/img.png)
코드
const createBranch = async (token, newBranch) => {
try {
// 지점명, 지역코드, 상세주소, 전화번호 입력칸이 공란인지 검증
const response = await axios.post(${process.env.REACT_APP_API_URL}/arentcar/manager/branchs,
newBranch,
{
headers: {
Authorization: Bearer ${token}
},
withCredentials: true,
});
newBranch.branch_code = response.data.branch_code;
newBranch.branch_name = response.data.branch_name;
// // 지점 리스트에 새로 추가된 지점 등록
// setBranchs((prevBranch) => [...prevBranch, newBranch]);
// 전체 지점 수 증가
setTotalCount((prevCount) => {
const updatedCount = prevCount + 1;
// 페이지 번호를 마지막 페이지로 이동
const totalPages = Math.ceil(updatedCount / pageSize); // 새로 추가한 지점 포함한 총 페이지 수 계산
setPageNumber(totalPages); // 마지막 페이지로 이동
return updatedCount; // 상태 업데이트 후 return
});
alert("지점이 추가 되었습니다.");
} catch (error) {
console.error("지점 추가 실패:", error);
throw error;
}
};
원인
- 페이지를 이동할 때 지점 데이터를 다시 `getBranchs` 함수로 가져오고 있기 때문
- `getBranchs` 함수가 서버에서 새로운 지점을 포함한 데이터를 다시 요청하고
- 그 데이터를 통해 `setBranchs`를 간접적으로 업데이트하게 됨
왜 주석 처리해도 잘 반영 되는가?
- getBranchs 함수:
- 지점 추가 후 `setTotalCount`가 호출되면, 전체 지점 수가 갱신되고 페이지 번호를 마지막 페이지로 이동시키게 됨
- 페이지 번호가 변경되면 `useEffect`에서 `getBranchs` 함수가 다시 호출되므로, 새로운 지점이 포함된 새로운 데이터 목록이 반환되고 branchs 상태가 업데이트됨
- setBranchs 없이도 목록에 반영되는 이유
- `getBranchs`에서 반환된 지점 데이터를 전체 목록을 포함하여 다시 받아오기 때문
- 예를 들어, getBranchs에서 지점 목록을 요청할 때, 새로 추가된 지점이 서버에서 반환되고, 그 결과로 branchs가 업데이트되면서 테이블에 반영되기 때문임
- 서버에서 전체 데이터를 새로 받아와서 처리하기 때문에, 클라이언트 상태 관리와는 별개로 서버에서 최신 데이터를 받아오고 있
'Problem Solving' 카테고리의 다른 글
[ArentCar][PS] Alert가 두 번 실행되는 문제 - 해결 (0) | 2024.12.16 |
---|---|
[ArentCar][PS] 쉼표 연산자로 인한 useState 초기값 설정 오류 문제 - 해결 (0) | 2024.12.13 |
[Git][PS] push to origin has encountered a problem 오류 해결 (0) | 2024.09.23 |
[PS][React] Route를 이용했을 때 github pages의 404 에러 해결 (a 태그 -> link to) (0) | 2024.08.01 |
[PS][React] react-scripts 은(는) 내부 또는 외부 명령 실행할 수 있는 프로그램 또는 배치 파일이 아닙니다 (0) | 2024.07.20 |