Mobx presentation

Stanislav Ivanov

Mobx

Simple, scalable state management

Mobx explained in two lines

  1. Define observables
  2. Observe them

observable

defines observable


value

could be js primitive, reference, plain object, class instance, array and map

autorun

tracks observable

example

http://jsbin.com/wimoqer/edit?js,output Mobx simple example on jsbin.com

computed

			@computed get propertyName() {
			   // return value based on other observables
			}
		

computed usage example

http://jsbin.com/guzuta/edit?js,output JS Bin on jsbin.com

Integration with react

https://github.com/mobxjs/mobx-react

Define observable

			import { observable } from 'mobx';
			 
			class Store {
				@observable name = '';
			}
			 
			const store = new Store();
		

Define observer component

			import { observer } from 'mobx-react';
			 
			@observer
			class View extends React.Component {
				render() {
					return <div>{store.name}</div>
				}
			}
		

Stateless components

			import { observer } from 'mobx-react';
			 
			const View = observer(() => <div>{store.name}</div>)
		

React example

http://jsbin.com/curedob/edit?js,output Mobx react example on jsbin.com

action

			@action method() {
			   // change observable state
			}
			 
			@action.bound method() {
				// binds method (useful in react components)
			}
		

action.bound react example

http://jsbin.com/poyaka/edit?js,output JS Bin on jsbin.com

Now that's your turn

Implement todo list using mobx

JS Bin on jsbin.com

Good luck

Use this jsbin as starting point

http://jsbin.com/yibeqox/edit?js,output