몹X(MobX)라는 것으로도 리액트의 상태관리가 된다는 것을 보고 헐레벌떡 헬로월드를 찍으러 왔다. 근데 뭔지 한방에 이해가 되지 않는다. 머릿속으로 그림을 그려가며 포스팅해 보겠다.
npx create-react-app mobx-test
일단 설치부터 하자.
cd mobx-test
npm install mobx mobx-react
Observable State 에 저장되어 있는 액션 함수
관찰받고 있는 상태값이 저장된 저장소
관심병사가 자해(?)나 자살(?)을 하지 않기 위하여 감시하는 병사가 옆에 있어야 관심병사의 상태는 나날이 변경될 것이다.
import { observable } from 'mobx';
// 관심병사 분대는 관심병사와 관심병사 감시자(Observable), 관리지침이 같이 들어있다.
const 관심병사_분대 = observable({
// 관심병사 갈굼
갈굼횟수 : 0,
// 관심병사 관리지침
갈구기(){
this.갈굼횟수++;
},
쓰다듬기(){
this.갈굼횟수--;
}
});
export default 관심병사_분대;
대충 이런식으로 이해하면 되겠다. 최대한 신병 여러분이 이해하기 쉽게 적어 보았다.
import 관심병사_분대 from './관심병사_분대';
const 관심병사_소대 = () => ({
관심병사_분대
...
...
});
export default 관심병사_소대;
import 관심병사_소대 from "./관심병사_소대";
import { useObserver } from 'mobx-react';
function 관심병사_관리() {
let { 관심병사_분대 } = 관심병사_중대();
let 관심병사_갈구기 = () => {
관심병사_분대.갈구기();
};
let 관심병사_쓰다듬기 = () => {
관심병사_분대.쓰다듬기();
};
return useObserver( ()=>(
<>
<div>count : {관심병사_분대.갈굼횟수}</div>
<div>
<button onClick={ ()=>{
관심병사_갈구기();
} }>+</button>
<button onClick={ ()=>{
관심병사_쓰다듬기();
} }>-</button>
</div>
</>
))
}
export default 관심병사_관리;
간단하게 설명하면 관심병사 분대의 관심병사가 갈굼을 당하면 관심병사 감시자가 잽싸게 알아채고 관심병사_관리에 적어놓는 구조이다. 그냥 Observable이 Notification 을 주면 알아서 렌더링 해준다는 얘기임.
적당한 포스팅이었다고 생각한다. 리액트를 신병 여러분이 잘 이해할 수 있도록 적긴 했지만 뭔가 부족한 부분이 있다면 행정반에 문의 주기 바란다. 이상!