▲ USERFLOW
const fetchBackgroundImageUrls = async () => {
try {
const response = await axios.get(`${API_BASE_URL}background-images/`);
if (response.status !== 200) {
throw new Error("Error fetching image urls:", response.status);
}
return response.data.imageUrls;
} catch (error) {
throw new Error("API Error", error);
}
};
const fetchPostPaper = async (recipientData) => {
try {
const response = await axiosInstance.post("recipients/", recipientData);
return response.data;
} catch (error) {
throw new Error(`"Error fetching data:", ${error.message}`);
}
};
const Button = ({ size, type, disabled, onClick, children }) => {
const selectedSize = SIZE[size];
return (
<button
className={selectedSize}
type={type}
disabled={disabled}
onClick={onClick}
>
{children}
</button>
recipientData post 요청 400 에러 발생
-> 원인: POST 요청은 잘 작성했으나 then으로 가져오는 과정에서 recipientData를 인자로 넣지 않았다.
-> 해결: then으로 가져오는 fetchPostPaper 함수 인자로 recipientData를 양식에 맞춰 작성했다.
페이퍼 배경을 컬러와 이미지 중 하나를 선택했는데 토글하면 초기값이 제대로 표시되지 않았다.
-> 원인: handleSelect 함수에 컬러, 이미지 setState를 함께 넣어 클릭 시 컬러와 이미지를 동시에 바뀌게 했다.
-> 해결: 컬러와 이미지 선택 함수를 각각 만들어 서로 영향을 받지 않게 따로 이벤트를 줬다.
useEffect(() => {
const handleIntersection = (entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting && hasNext) {
loadMessages({ recipientId, offset, limit: LIMIT });
}
});
};
const observer = new IntersectionObserver(handleIntersection, IO_OPTIONS);
observer.observe(SENTINEL.current);
return () => {
/* 페이지 전환 시 element 사라짐 대응 조건식 */
if (SENTINEL.current) {
observer.unobserve(SENTINEL.current);
}
};
}, [offset, hasNext]);
나의 목표: 맡은 역할을 잘 해내고, 팀원들과 소통을 잘하고, 회고를 잘 남긴다.
걱정 반 기대 반이었던 첫 프로젝트를 마무리했다. 첫 주에 기능을 구현하면서 기한 내 마무리하지 못하면 어쩌지라는 걱정과 부담감이 컸다. 그러나 "잘하지 않아도 굴하지 않는다"라는 마음가짐으로 프로젝트를 진행했다. 내 역할을 충실히 하고 싶었고, 이를 어느정도 이뤘다. 프로젝트를 하면서 솔선수범하는 팀원들을 보며 나도 그렇게 하려고 노력했다. 성실하고, 책임감있고, 수용적인 팀원들에게 고맙다. 나 스스로도 프로젝트를 잘 마무리하는데 기여해서 뿌듯하다.
${styles.ChooseButton} ${styles.ChooseButton}
}