반응형
MobX Modifiers
MobX Modifiers는 observable 프로퍼티의 변화에 대한 행동을 정의 하는 역할을 한다.
observable
- observable 프로퍼티의 깊이를 정하는 Modifier deep, shallow, ref 등이 있다.
observable.deep
observable의 기본 동작 modifier. 모든 depth 를 observer 한다.
객체를 깊이 관찰 가능하게 만드는 데 추가 노력이 필요하지 않다.
- 편하다 개꿀 👍
@observer
class Model extends Component {
@observable
user = {
name: "myName",
friends: [{ name: "firendName" }]
};
@action
editUser = () => {
//감지 => 렌더링
this.user.friends[0].name = "newFriendName";
//감지 => 렌더링
this.user.friends.push({ name: "newFriendName" + i });
};
}
Reference observability
- deep과 달리 object가 전부 observable이 필요가 없는 경우.
- object의 불변성이 유지 되는 경우.
- object 상태가 다른 라이브러리에 의해 관리 되는 경우
observable.ref
- object 자체가 아닌 객체의 참조만을 observable 하게 만듬
@observable.ref
user = {
name: "myName",
friends: [{ name: "firendName" }]
};
@action
editUser = async () => {
// 참조가 유지 되기 떄문에 감지 되지 않는다
this.user.friends[0].name = "newFriendName";
// 참조가 변경 되서 감지 => 랜더링
this.user = {...this.user}
};
Shallow observability
- 1단계 뎁스에 대한 단계까지 (one-level-deep) observable 값으로 합니다.
- observable 값들에 대한 collection에 사용
- 예를들어 collection에 추가되는 값은 observable이 되지만 해당 객체 내부 프로퍼티는 observable 로 생성하지 않음
observable.shallow
@observable.shallow
users = [{ name: "firendName" }];
@action
editUser = async () => {
// 감지 안됨
this.users[0].name = "changeName";
// // 감지 됨
this.users.push({ name: "newUser" });
};
참고
https://doc.ebichu.cc/mobx/refguide/modifiers.html
https://www.mobxjs.com/refguide/modifiers.html
https://javascript.plainenglish.io/list-of-mobx-modifiers-d266b9957ec6
반응형
'개발관련' 카테고리의 다른 글
Android Kotlin 안드로이드 코틀린 AlertDialog Dismiss 설정하기 ( Alert 콜백 처리) (0) | 2021.05.28 |
---|---|
IOS 앱 개발할때 테스트 시 테스트 플라이트( TestFlight )로 테스트 하는 방법 (0) | 2021.04.16 |
Mobx 심화 mobx의 reactions 종류 autorun, reaction, when (0) | 2021.03.28 |
[프로그래머스] 소수 구하기 (JavaScript) (0) | 2020.08.27 |
[프로그래머스] 문자열 내 마음대로 정렬하기 (0) | 2020.08.19 |