Problem:
The below react component is not re-rendering when I add @action decorator to the class member fn.
import { observable, action } from "mobx";
import { observer } from "mobx-react";
import * as React from "react";
import { render } from "react-dom";
@observer
class PriceCounter extends React.Component {
@observable price = 0;
@action
setPrice = () => {
this.price = this.price + 1;
};
@action
currentPrice = () => {
return this.price;
}
render() {
return (
<div>
<span className="text-3xl">Total: {this.currentPrice()}</span>
<button onClick={this.setPrice}>Change details</button>
</div>
);
}
}
render(<PriceCounter />, document.getElementById("root"));
- The PriceCounter component re-renders as expected when @action is removed from currentPrice fn.
Why? Explanation needed.