inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전 리액트 프로그래밍

immer 패키지 없이 createReducer함수 작성 문의

해결된 질문

360

드로우

작성한 질문수 4

1

import { createStore } from "redux";
import { createReducer } from "./createReducer";
 
export default function Chapter0603() {
    return <div>실전 리액트</div>;
}
 
const INITIAL_STATE = { value: 0 };
const reducer = createReducer(INITIAL_STATE, {
    INCREMENT: state => (state.value += 1),
});
const store = createStore(reducer);
let prevState;

// store.dispatch 를 호출하여 액션을 발생시켰을 때
// 액션이 끝이나면 store.subscribe 함수가 호출이 된다.
store.subscribe(() => {
    const state = store.getState();
    if (state === prevState) {
        console.log('상탯값 같음');
    } else {
        console.log('상탯값 변경됨');
    }
    prevState = state;
});
 
store.dispatch({ type: 'INCREMENT' });
store.dispatch({ type: 'OTHER_ACTION' });
store.dispatch({ type: 'INCREMENT' });
import produce from "immer";
 
export function createReducer(initialState, handlerMap) {
    return function (state = initialState, action) {
        return produce(state, draft => {
            const handler = handlerMap[action.type];
            if (handler) {
                handler(draft, action);
            }
        });
    };
};

createReducer에서 immer 패키지 사용해서 불변객체로 리턴해주도록 하잖아요.
immer 이용하지않는 createReducer를 만들려면 어떻게 해야할까요?
그럴려면 직접 불변객체를 만들어줘야하는데,  INCREMENT: state => state.value += 1 이 부분을
createReducer로 넘겨준 다음에 함수로써 실행하게 하는 부분을 만들지 못하겠네요.

react redux

답변 2

1

드로우

아직 js를 전부 아는 것이 아니라 proxy 사용법을 몰라 차차 공부해가며 한번 구현해봐야겠네요.
제가 라이브러리 급 함수를 구현할 수 있을지 모르겠네요 ㅎㅎ
답변 감사드립니다. 알려주신 링크 참고해보겠습니다!

1

이재승

안녕하세요
immer 를 사용하지 않는다면 immer 가 하는 일을 똑같이 구현해야하는데요
아래와 같이 요약할 수 있을 것 같아요

1. 객체에서 수정된 속성이 뭔지 파악한다 (객체의 모든 후손 객체에 대해서도 파악 필요)
2. 수정된 속성의 부모 객체를 새로 만든다 (레퍼런스 변경)

이를 구현하는 한 가지 방법으로 proxy 를 이용하는 방법이 있습니다
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy

자동완성기능이 안되네요 ..

0

499

3

화면에 에러가나네요 ...

0

517

2

setValue 함수 질문 있습니다.

0

840

1

찾아야한다 실습 문의

0

469

1

훅 기초 익히기 - 배치 처리와 순차적 처리의 차이

0

470

1

cra, next.js 관련 질문 드립니다!

0

606

1

useState 배열 비구조화 문법 질문!

0

252

1

Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'

1

1081

2

Saga 오류 이거 혹시 왜이런지 알수 있을까요?

0

371

2

http://localhost:3001/user/search?keyword=u 이걸로 데이터를 보는데 저는 사이트에 연결할 수 없다고 나오네요

0

657

1

match

1

495

1

버튼이 생성되지 않습니다 .

0

288

1

혹시 import 옆에 파일 사이즈 표시 어떻게 하나요?

0

262

1

saga 문제

0

248

1

에러가 발생하는데 이유가뭘까요..?

0

388

2

선생님과 똑같이 했는데 다 rendering 됩니다.

0

203

1

컴포넌트와 컨테이너의 기준

0

316

1

커스텀훅의 개념과 함수차이

1

1199

1

useEffect 실전 활용법(1) 강의에서 질문있습니다.

0

338

1

리덕스, 사가파일들의 관리

0

207

1

useImperativeHandle 질문 입니다.

0

281

1

컴파일 문의드립니다.

0

203

1

React.memo 관련 질문이 있습니다.

0

373

1

Context API vs Redux 사용 빈도

0

213

1