ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리덕스란?
    리덕스 2021. 9. 15. 00:42

    오늘 차장님께 리덕스에 대한 설명을 들었다.

    간단한 개념공부를 하며 이해했던 내용을 정리해보았따.

     

    리덕스

     

    리덕스를 왜 쓰는가?

     1. props 문법이 번거로울 때

     2. state(상태)변경,관리할 때

     

    1 )

    상태 변수를 내부 컴포넌트로 전달하기 위해서는  props 문법으로 끝없이 전달해줘야한다.

    (전달하지 않고 그냥 변수를 그대로 가져다 쓸 수 없음)

     

    개귀찮아!

    => 그래서 쓰는 것이 REDUX

     

    state를 보관할 수 있게 된다.

    props 문법으로 계속 전달할 필요 없이 state를 보관한 곳(ex. store.js)에서 꺼내다가 쓰면 됨.

     

    component에서 store에 넣어둔 state를 쓰려면?

    function App() {
    
    	const myScore = useSelector(( state ) => state );
    	
        return (
        	<div className="App">
            	<p>Score is : { myScore } </p>
            </div>
        );
    }

    이렇게 직접 꺼내서 쓴다. 진짜 짱편하다

     

    2)

    state관리가 용이하다 === 수정이 쉽다 === 범인찾기가 쉽다

     

    state를 수정을 해야한다면?

    - state를 props문법으로 끝없이 내부의 컴포넌트로 보냈다면 백만개의 컴포넌트를 다 뒤져봐야한다.

     

    - 해당 state를 리덕스를 이용해 store에서 가져왔다면, 해당 state의 아래에 수정방법을 미리 정의해둔 뒤에

       각 컴포넌트에서는 수정을 요청만 하는 것.

    만약 버그가 발생한다면 범인은 하나밖에 없음. 각 컴포넌트를 다 뒤질 필요가 없다

    const 체중 = 100;
    
    function reducer(state = 체중, action){
     if(action.type === '증가'){
       state++;
       return state
     }
     else if (action.type === '감소'){
       state--;
       return state
     {
     else {
     return state
     }
     
     }

    이렇게 해당 state의 아래에 수정방법을 정의한다.

    증가요청을 한다면 체중 + 1, 감소요청을 한다면 체중 -1 이 되게끔.

     

    그럼 컴포넌트에서 그 state를 수정요청하려면? => 이때 쓰는 것이 dispatch

    function App() {
    
    	const myScore = useSelector(( state ) => state );
        const dispatch = useDispatch()
    	
        return (
        	<div className="App">
            	<p>Score is : { myScore } </p>
                <button onClick={() => {dispatch({type : '증가'}) }}>  점수 더하기 </button>
            </div>
        );
    }

    이렇게 수정요청을 할 수 있따

    '리덕스' 카테고리의 다른 글

    Module not found: Can't resolve './serviceWorker' in... 해결법  (0) 2021.09.23
    redux를 이용해 web app을 만들어보자  (0) 2021.09.23
    Redux-1  (0) 2021.09.20
Designed by Tistory.