ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [React] Section 20
    Frontend/React 2023. 12. 17. 15:29

    리듀서 함수는 반드시 순수 함수여야 하며 부수효과가 없고 동기식이어야 한다.

     

    어디에 side effect와 비동기 작업이 실행되어야 하는가?

    -> useEffect를 사용하여 컴포넌트 안에 넣는다.

    -> action creator 안에 넣는다.

     

    우리의 logic 코드를 어디에 두어야 하는가?

    동기적이고, side effect가 없는 코드 (ex 데이터 변환) : reducer 사용, action creators나 컴포넌트를 피할 것

    비동기적이거나 side effect가 있는 코드 : action creators나 컴포넌트를 사용하고 reducer는 절대 사용하지 말 것

     

    리덕스와 함께 useEffect 사용하기

    useSelector가 리덕스에 대한 구독을 설정한다. 리덕스 스토어가 변경될 때 마다 컴포넌트 함수가 다시 실행되고 최신 상태가 된다.

     

    const showCart = useSelector((state) => state.ui.cartIsVisible);
      const cart = useSelector((state) => state.cart);
    
      useEffect(() => {
        fetch("~firebase 경로~", {
          method: "PUT",
          body: JSON.stringify(cart),
        });
      }, [cart]);

     

    -> lean component가 모든 논리를 사용하여 fat 리듀서를 만든 다음 리덕스 상태에 따라 달라지는 부수 효과를 수행 할 수 있게 된다!!!

     

    useEffect 안에 비동기식 코드를 작성하는 방법

    useEffect(() => {
        const sendCartData = async () => {
          const response = await fetch(
            "~firebase 경로~",
            {
              method: "PUT",
              body: JSON.stringify(cart),
            }
          );
        };
      }, [cart]);

     

    Thunk

    Thunk는 다른 작업이 완료될 때까지 작업을 지연시키는 단순한 함수이다.

     

    리덕스의 가장 큰 장점은 유형 프로퍼티가 있는 작업 개체만 허용하는 것이 아니라 함수를 반환하는 작업 크리에이터도 허용한다는 것이다.

     

    Redux DevTools

    리덕스 툴킷 없이 리덕스를 사용할 때는 리덕스 데브툴이 작동하도록 몇 가지 추가코드를 설정해야 한다.

    리덕스 툴킷을 사용하면 즉시 사용할 수 있어 편리하며 이를 통해 해당 확장에 바로 액세스 할 수 있다.

    'Frontend > React' 카테고리의 다른 글

    [React] Section 22  (0) 2024.01.08
    [React] Section 18, 19  (0) 2023.12.10
    [React] Section 17  (0) 2023.11.21
    [React] Section 15, 16  (0) 2023.11.13
    [React] Section 14  (0) 2023.11.12
Designed by Tistory.