React : Redux 를 이용한 증가 감소 버튼 만들기
Redux의 기본구조를 알아야 할 수 있는 내용이다.
모르면 기본구조 부터 공부해야 한다.
구현할 프로젝트: 증가 버튼을 누르면 5씩 증가 , 감소버튼을 누르면 5 씩 감소
💙이해하기 쉽게 내가 사용한 함수를 정리해보자 💙
< dispatch>
1. dispatch 를 사용하면 == action의 값과 동일하다.
2. dispatch 는 2개의 매개변수를 가질 수 있는데 type 과 payload
3. type 은 이름이고 payload는 내가 원하는 값을 넘겨주는 함수의 매개변수라 생각하면 된다.
4. dispatch ( { type : "이름" , payload :{num:5} } ) 이렇게 중괄호 안에 사용해야 하며 payload는 넘겨줄 값을 쓸때도 {} 안에 키 값과 출력값을 작성한다.
<useSelector>
1. useSelector 은 store에 저장한 값 즉 state에 있는 값을 app에 넘겨주는 역할을 하는 아이다.
2. let count = useSelector ((state)=> state.count) 이 코드를 해석하면
state 값에는 count = 0 이라는 초기값이 들어가져 있는데 app에는없고 reducer 파일에 있다.
그래서 store에 전달된 그값을 다시 app으로 전달하는게 useSelector이다
state 에서 전달할께 => 근데 state 에 있는 모든값을 가져오는게 아닌 count 값만 가져오고 싶어 .count를 하는것
app 💛
let count = useSelector(state=>state.count)
// useDispath를 dispath란 변수에 넣고 사용한다.
const dispatch = useDispatch()
// 나는 증가시키는 함수야 payload의 값이 5기 때문에 5씩 증가해
const increse=()=>{ dispatch({type:"INCREAMENT",payload:{num:5}})
//나는 감소시키는 함수야 payload의 값이 5기 때문에 5씩 감소해
const Decrement=()=>{ dispatch({type:"DECREMENT",payload:{num:5}}) }
return(
<>
<button onClick={ increse }> 증가 </button>
<button onClick={Decrement}>감소</button>
</>
)
< reducer💛>
let initialState={
count: 0,id : "",password: "",}function reducer(state=initialState,action){console.log(action)
switch (action.type){case "INCREAMENT" :return{ ...state, count:state.count+action.payload.num };case "LOGIN" :return{...state,id:action.payload.id,password:action.payload.password}case "DECREMENT" :return{...state,count :state.count-action.payload.num}default:
return {...state}
<💛순서대로해석💛>
생각보다 어려울 수 있지만 천천히 하나씩 뜯어보면 이해할 수 있다.
나도 이렇게 진행하는데 있어서 몇일이 걸렸지만 어떻게 사용해야 하는지 익히는 시간이였다.
오늘도 이렇게 하나를 알아가며 뿌뜻함을 느끼며 성장해 나가는게 보여서 좋다.