Reputation: 11
I am trying to use Mobx to build a simple counter in react. I can see that it is updating the value in the class, but the updated value isn't getting updated in the react view.
Here is my code
import {observable} from 'mobx';
import {observer} from 'mobx-react';
import React, {Component} from 'react';
import ReactDOM from 'react-dom';
class CounterStore {
@observable counter;
constructor(){
this.counter = 0;
}
increase(){
this.counter++;
}
decrease(){
this.counter--;
}
}
@observer
class Counter extends Component {
render(){
const counter = this.props.counter;
return(
<div style={{display: 'flex'}}>
<button onClick={counter.increase.bind(counter)}>+</button>
<p style={{color: 'black', marginRight: '1rem', marginLeft: '1rem'}}>{counter.counter}</p>
<button onClick={counter.decrease.bind(counter)}>-</button>
</div>
);
}
}
const store = new CounterStore();
ReactDOM.render(
<Counter counter={store} />,
document.getElementById('app')
);
Upvotes: 1
Views: 1444
Reputation: 4978
I just tried your code in a JSFiddle and it seems to run without issues?
http://jsbin.com/bocabefuji/1/edit?html,js,console,output
Upvotes: 2