useSelector

김민석·2024년 4월 23일

useSelector란?

useSelector는 리액트의 리덕스 스토어 관련 Hooks중 하나이다. 이 Hook은 스토어의 상태값을 반환해주는 역할을 한다. useSelector를 사용한 함수에서 리덕스 스토어의 상태값이 바뀐 경우 바뀐 스토어의 상태값을 다시 가져와 컴포넌트를 렌더링 시킨다.

useSelector 사용법

	npm install react-redux // 설치
    import {useSelector} from "react-redux"; 정의 

useSelector 형식

	const isDark = useSelector((state) => state.theme.isDarkMode); 
     <div className={!isDark ? "App" : "darkbox"}>
      <Main />
    </div>

useSelector에 매개변수에 state => state.모듈명 형식으로 상태값을 반환할 수 있다.

const dispatch = useDispatch();
 <div onClick={() => {
            dispatch(toggleTheme());
        }}>'
  </div>

여기서 useDispatch()를 사용하여 스토어의 상태를 변경시키기 위한 액션을 호출할 수 있다. 위에서는 toggleTheme()이라는 액션을 호출하였고 스토어의 값이 변경이 되었고

 toggleTheme :(state,action) =>{
            state.isDarkMode = !state.isDarkMode;
            state.themeMode = state.themeMode ==="light" ? "dark" :"light";
        }

isDarkMode가 !state.isDarkMode로 변경되어서 아래 코드에서 isDark가 false값으로 변하며 아래 div의 ClassName이 "darkbox"로 변하게되어 dark모드가 실행된다!

	const isDark = useSelector((state) => state.theme.isDarkMode); 
     <div className={!isDark ? "App" : "darkbox"}>
      <Main />
    </div>

useDispatch + useSelector를 활용한 리덕스 스토어의 장점

리덕스 스토어에 상태값을 관리하기 위해 값을 저장하고 useSelector를 통해 필요한 상태값을 반환하여 적절한 컴포넌트에 사용하여 불필요한 렌더링을 최소화 할 수 있으며, props를 사용할 때의, 복잡함을 단번에 해결할 수 있다.

profile
나만의 기록장

0개의 댓글