Here is the code - pretty sure it's something like extendObservable, which I just don't understand, but looked at it for quite some time. When addSimpleProperty is started, it seems that it is updating the object, but does not cause rendering.
const {observable, action, extendObservable} = mobx; const {observer} = mobxReact; const {Component} = React; class TestStore { @observable mySimpleObject = {}; @action addSimpleProperty = (value) => { extendObservable(this.mySimpleObject, {newProp: value}); } } @observer class MyView extends Component { constructor(props) { super(props); this.handleAddSimpleProperty = this.handleAddSimpleProperty.bind(this); } handleAddSimpleProperty(e) { this.props.myStore.addSimpleProperty("newpropertyvalue"); } render() { var simpleObjectString =JSON.stringify(this.props.myStore.mySimpleObject); return (<div> <h3> Simple Object</h3> {simpleObjectString} <br/> <button onClick={this.handleAddSimpleProperty}>Add Simple Property</button> </div>); } } const store = new TestStore(); ReactDOM.render(<MyView myStore={store} />, document.getElementById('mount')); store.mySimpleObject = {prop1: "property1", prop2: "property2"};
source share