Toast

맨땅헤딩! ㅣ 2023. 5. 10. 09:32

해당 포스트는 제로베이스 오프라인스쿨 진행 과정 중 React PairProgramming과제를 진행하며 회고를 정리하는 글이다.

 

토스트 제거

- 현상

토스트 제거 시 이전 toasts 상태를 참조 하고 있어서 이전 상태가 같이 렌더링 되는 현상이 발생했다.

 

// Toast.jsx
...
React.useEffect(() => {
    if (!dismiss && autoClose) {
      setTimeout(() => {
        setDismiss(true);
      }, autoCloseDelay);
    }
  }, []);
// useToasts.js
const removeToast = id => setToasts(toasts.filter(toast => toast.id !== id));

 

- 발견

removeToast함수에서 setToasts에 값이 아닌 함수를 전달하여 업데이트 해주었다.

   

const removeToast = id => setToasts(toasts => toasts.filter(toast => toast.id !== id));

 

- 배운점

setter함수에 값을 주면 다음 상태를 직접 전달하고  함수를 주면 보류 중인 상태를 가져와서 다음 상태를 업데이트 해주는  차이를 알게 되었다.

 

- 선언

useState setter`함수에 값을 전달해 줄 지 함수를 전달해 줄 지 잘 생각해 보아야겠다.

 

useState 또는 useRef 5개 사용하기

- 현상

toast의 정보를 가져오기 위해 5개의 Input요소의 값을 조정하기 위해 5개의 state를 사용하는 방법과 5 ref를 사용하는 방법이 있었다. 하지만 두 가지 방법 모두 코드가 많아지고 복잡한 현상이 있었다.

   

- 발견

Form으로 감싸면 폼의 자식인 요소를 찾는 방법이 nativeEvent에서 제공된다.

 

- submit event가 발생한 submit button type 가져오기

(, button을 구별할 수 있는 id 같은 props를 미리 정해줘야 한다. )

 

type: e.nativeEvent.submitter.id

 

- input의 값 또는 체크 상태 가져오기

       

message: e.nativeEvent.target[4].value
autoClose: e.nativeEvent.target[6].checked

- 배운점

Form은 앞으로 사용할 일이 많을 텐데 새로운 기능을 알게 되었다. 

   

- 선언

Form 을 익숙하게 사용하고 아직 사용해보지 못한 기능들을 사용해보는 기회를 가져야겠다.

 

 

'React > PairProgramming3 회고' 카테고리의 다른 글

Toggle Side Navigation  (0) 2023.05.10
Form Validation  (0) 2023.05.10
Carousel Slider  (0) 2023.05.10
Autocomplete  (1) 2023.05.10
Tabs  (0) 2023.05.10