Mobx-react

Mobx-react

Mobx 是一种状态管理方案。不同于 redux 将状态定义为不可变状态,mobx 会自动收集依赖,以可变状态的方式直接修改原始状态,这点与 Vue 的状态管理很像。

在 es6 环境下,可以直接使用装饰器定义状态及方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { observable } from "mobx";

class CounterStore {
@observable count = 0;

@action
increase() {
this.count++;
}

@action
decrease() {
this.count--;
}
}

export default new CounterStore();

@action 用来定义状态修改方法,@observable 用来定义可观察对象。

在 react 中可使用 mobx-react 提供的 Provider 组件装载 store

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import React, { Component } from 'react';
import { Provider, observer, inject } from 'mobx-react';
import ReactDOM from 'react-dom';
import store from './counter-store';

@inject('store')
@observer
class Counter extends Component {
render() {
return (
<div>
自动响应 @action 对状态的变更:{this.props.store.count}
<div>
<button onClick={() => this.props.store.increase()}>+</button>
<button onClick={() => this.props.store.decrease()}>-</button>
</div>
</div>
)
}
}

ReactDOM.render(
<Provider store={store}>
<Counter />
</Provider>,
document.getElementById('mount')
);

@inject 用于将 Provider 传入的 props 注入到组件中。这里可将 store 注入到 Provider 的子组件中,当然也支持多个 store 同时注入。

# mobx, react

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×