이걸 왜하냐하면 우리가 보통 ejcet해서 cra를 해체한다음 해야되는데 이렇게 해서 webpack 수정을 해체 없이 수행할수있습니다.
index.js
import 부분 밑에
import{ autorun, observable }from"mobx";
constnim=observable(0);
autorun(()=>{
console.log(nim.get());
});
nim.set(1);
이렇게 추가하고 npm start해서 콘솔창을 보면
이렇게 되있다.
로그는 한번만 찍었느데 두개가 찍혔있습니다.
이건 바로 observable와 autorun때문입니다. 즉 observable로 만든 것이 설정되거나 변할때마다 autorun에 있는 함수를 실행하게 됩니다. 그리고 저렇게 객체가아닌 숫자나 fasle이런것을 넣었으면 get,set을 이용해서 데이터를 변경 출력 해주어야 합니다. 그럼 객체면 어떻게 되느지 보겠습니다. 따라하지 않아도 됩니다.
constnim=observable({add1:0,add2:3});
autorun(()=>{
console.log(nim.add1);
});
nim.add1=4;
즉 객체를 넣으면 그냥 일반적으로 데이터를 변경하는거 처럼해주시면 됩니다
그럼 이제 index.js
import React from"react";
import ReactDOM from"react-dom";
import"./index.css";
import App from"./App";
import reportWebVitals from"./reportWebVitals";
import{ makeObservable, observable }from"mobx";
classadd{
@observable
add1=1;
@observable
add2=2;
constructor(){
makeObservable(this);
}
clicked(){
this.add1=this.add1+1;
console.log(this.add1);
}
}
exportconstadded=newadd();
ReactDOM.render(
<React.StrictMode>
<App/>
</React.StrictMode>,
document.getElementById("root")
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))