1.리액트 컴포넌트 간의 데이터를 props로 관리하려 시도
2. 댓글을 생성하려 하는데 이용하는 <Comment comment={commentInfo}/>
라는 컴포넌트가 있다 해보자, 댓글은 크게 댓글과 대댓글로 나뉘고 댓글은 <SingleComponent/>
대댓글은 <ReplyComment />
에서 다룬다고 할 때 <Comment />
컴포넌트의 props.comment를 참조해 각각의 컴포넌트를 생성한다 할 때는 props를 통해 데이터 전달이 용이
1.액션 객체 생성(액션 명령어와 액션 행동을 정의)
action type(명령어)
export const USER_LOGIN = 'USER_LOGIN'
action creators(액션 메서드)
->리듀서로 데이터 생성 요청 기능한다
->대부분 로직을 여기서 처리
export function complete({id}) {
return { type: USER_LOGIN,id};
}
2.리듀서가 액션 객체를 받고,액션의 타입에 따라 state다르게 변경, 이 때 상태가 추가되는 것이 아닌 덮어씌워지게 되므로 전체 상태를 복사하여 상태를 갱신한 후에 반환해야
이 때 ...state
같이 spread operator
를 이용하여 전체 상태를 복사한다.
즉, 저장소에 {id: 1, name: 'Seoul'}
이 저장되어 있는 상태에서 리듀서가 {id: 2}
를 반환하면 저장소에는 {id: 2}
만 저장된다
const AuthReducer = (state={},action) {
switch(action.type) {
//action.type에 따라 state변경이 달라짐
case LOGIN_USER:
return {
...state,
// 기존의 state로 덮어씌우는 과정
id : action.id
//action creator가 전해준 id
},
default:
return state;
}
}
3.리듀서에 의한 바뀐 state가 redux store에 반영