작성
·
163
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가 변경될 때 마다 실행된다고 하셨는데
실제 실험해보니 결과가 조금 다르게 나온 것 같았습니다.
그래서 확인해보니 다음과 같이 동작한다는 사실을 알게 되었습니다.
autorun이 정의될 때 한 번 실행
autorun 함수 내부에서 참조하고 있는 observable state가 변경될 때 실행
아마 버전이 업데이트 되면서 바뀐 것 같은데 제가 알게 된 사실이 맞을까요?
답변 1
1
autorun에 state.name을 담아두셨으니 state.name이 변경될 때만 autorun이 실행되는 게 맞습니다. autorun.married가 바뀔 때는 안 실행되는 거죠. 버전 업데이트 전에도 원래부터 그랬던 걸로 기억합니다.
감사합니다!
제가 섹션 3 강의에서 autorun은 액션이 실행될 때마다 무조건 실행된다고 이해해서 혼동이 왔었네요