IT_susu

redux) ui와 합치기 본문

[ javascript ]/react

redux) ui와 합치기

고베베 2019. 9. 21. 14:52

1. ui와 연결하기 위해서 react-redux의 connect로 감싸줌. - state와 dispatch 연결

mapStateToProps : store에 있는 state를 props로 연동해준다.

mapDispatchToProps: dispatch  함수를 props로 연동해준다.

 

2. bindActionCreators로 dispatch 함수 리턴하는 부분을 편리하게 써줄 수도 있지만 최종판은 아래와 같다

export default connect(
    (state) => ({
        number: state.test.number,
    }),
    {
        increase,
        decrease,
    },
)(Login);

 

리덕스 더 편하게 사용하기

1. redux-actions

action creators 의 변화

// before
export const increase = () => ({ type: INCREASE });
export const decrease = () => ({ type: DECREASE });

// after
export const increase = createAction(INCREASE);
export const decrease = createAction(DECREASE);

 

리듀서의 변화

// before
function test(state = initialState, action) {
    switch (action.type) {
    case INCREASE:
        return {
            number: state.number + 1,
        };
    case DECREASE:
        return {
            number: state.number - 1,
        };
    default:
        return state;
    }
}

// after
const test = handleActions(
    {
        [INCREASE]: (state, action) => ({ number: state.number + 1 }),
        [DECREASE]: (state, action) => ({ number: state.number - 1 }),
    }, initialState,
);

 

hooks를 이용하여 연결하기

1. useSelector

mapStateToProps => useSelector

const number = useSelector(state => state.test.number);

 

2. useDispatch

mapDispatchToProps => useDispatch

const dispatch = useDispatch();

const onIncrease = useCallback(() => dispatch(increase()), [dispatch]);

 

'[ javascript ] > react' 카테고리의 다른 글

redux middleware : thunk  (0) 2019.09.21
redux) store 만들기  (0) 2019.09.21
context API  (0) 2019.09.13
react-router-dom etc  (0) 2019.09.09
RRD - Navigation APIs  (0) 2019.09.06
Comments