I can't make React re-render with MobX.
I'm setting up everything as per the documentation. My class contains action and observable decorators. I tried hooking up the React component with useObserver hook or observer HOC and it simply won't re-render.
Snippet:
import React from "react";
import ReactDOM from "react-dom";
import { action, observable } from "mobx";
import { observer, useObserver } from "mobx-react-lite";
class Timer {
@observable secondsPassed: number = 0;
@action increaseTimer() {
console.log("here");
this.secondsPassed += 1;
}
}
const myTimer = new Timer();
setInterval(() => {
myTimer.increaseTimer();
}, 1000);
const TimerView = ({ timer }: { timer: Timer }) => {
return useObserver(() => <div>{timer.secondsPassed}</div>);
};
ReactDOM.render(<TimerView timer={myTimer} />, document.body);
https://codesandbox.io/s/minimal-observer-forked-gif4q?file=/src/index.tsx
I'm trying to make it work with decorators, what am I doing wrong?