강의

멘토링

커뮤니티

Inflearn Community Q&A

nureongi0214's profile image
nureongi0214

asked

Redux vs MobX (Learn Both!)

섹션 3 mobx autorun 관련 질문입니다.

Written on

·

239

0

const state = observable({
  name: "zero",
  age: 28,
  married: false,
});

autorun(() => {
  console.log("autorun : " + state.name);
});

reaction(
  () => state.name,
  () => {
    console.log("reaction : name changed");
  }
);

runInAction(() => {
  state.name = "nureongi";
  state.age = 26;
});

const action1 = action(() => {
  state.married = true;
});

const action2 = action(() => {
  state.married = false;
})

action1();
action2();

/**
autorun : zero
autorun : nureongi
reaction : name changed
**/

안녕하세요! 강의 잘 듣고 있습니다.

 

제가 궁금한 것은 강의에서 autorun은 observable에 담긴 모든 state가 변경될 때 마다 실행된다고 하셨는데

실제 실험해보니 결과가 조금 다르게 나온 것 같았습니다.

그래서 확인해보니 다음과 같이 동작한다는 사실을 알게 되었습니다.

 

  1. autorun이 정의될 때 한 번 실행

  2. autorun 함수 내부에서 참조하고 있는 observable state가 변경될 때 실행

 

아마 버전이 업데이트 되면서 바뀐 것 같은데 제가 알게 된 사실이 맞을까요?

reduxmobx

Answer 1

1

zerocho님의 프로필 이미지
zerocho
Instructor

autorun에 state.name을 담아두셨으니 state.name이 변경될 때만 autorun이 실행되는 게 맞습니다. autorun.married가 바뀔 때는 안 실행되는 거죠. 버전 업데이트 전에도 원래부터 그랬던 걸로 기억합니다.

nureongi0214님의 프로필 이미지
nureongi0214
Questioner

감사합니다!

제가 섹션 3 강의에서 autorun은 액션이 실행될 때마다 무조건 실행된다고 이해해서 혼동이 왔었네요

nureongi0214's profile image
nureongi0214

asked

Ask a question