인프런 커뮤니티 질문&답변
안녕하세요.. 리덕스 연습하는 중에 막혀서 질문드립니다..
작성
·
208
0
안녕하세요. 리덕스를 공부하고 혼자 연습하는데 잘 모르겠어서 질문 드립니다..
리덕스가 개념은 이해가 가도 실제 사용하는게 어려워서 다른 여러 강의나 글들을 보면서 연습해보고 있습니다.
예제출처 해당 강의가 옛날꺼라 클래스형 컴포넌트를 쓰기 때문에 예제만 따오고 함수형 컴포넌트를 사용해서 해보고 있습니다.
코드
스토어에는 number와 size 두개의 state가 있습니다.
AddNumber의 input에 값을 입력하면 그 값이 스토어의 size에 업데이트 됩니다.
+와 - 버튼을 누르면 그 input에 입력한 값만큼 number에 더해지고, displaynumber에 보여져야 합니다.
+와 -버튼을 눌렀을 때 number값이 새로 업데이트 되도록 만들고 싶은데, increase와 decrease 액션을 생각대로 만들기가 쉽지 않습니다. 현재 input값이 바뀔 때 스토어의 size가 바뀌는것까지 성공한 상황입니다.
handleActions으로 리듀서함수를 만들었는데, 이부분이 의심스럽습니다.
const Add = handleActions(
{
[INCREASE]: (state, action) => ({
...state,
number: state.number + state.size,
}),
[DECREASE]: (state, action) => ({
...state,
number: state.number - state.size,
}),
[CHANGE_INPUT]: (state, action) => ({
...state,
size: action.payload,
}),
},
initialState
);
CHANGE_INPUT 액션은 말을 잘듣는데, INCREASE와 DECREASE는 잘 모르겠습니다 !!ㅜㅜ
increase나 decrease가 왜 addnumber 컴포넌트로 안가져와지는지,
함수가 state의 size를 가져와서 쓸수있도록 하고싶은데
어떻게 코드를 짜야 생각한대로 움직일지,,
추석에 질문 보내서 죄송합니다. 천천히 답변해주시면 정말 감사하겠습니다. 해피추석되시길 바라요. 감사합니다~
답변 1
0






addnumber.js
addContainer.js
위 컴포넌트에서 리듀서와 연동을 해서 addnumber 컴포넌트에 넘겨줍니다.
action은 쓸 필요가 없나요? 라는 말씀이 잘 이해가 안갑니다ㅜㅜ 이 부분을 말씀하시는건가요
액션생성함수에 파라미터로 넣을 값을 action.payload 라는 이름으로 넣는다고 알고 있는데,
컴포넌트에서 파라미터로 넣는게 아니라 스토어에 있는 size를 쓰도록 하고싶어서 바로 state.size를 더해서 반환하도록 했습니다.
modules/Add.js 추가합니다