MobX 是一个用于状态管理的库,它通过响应式编程使得状态管理更加简单和高效。observer
是 MobX 中的一个关键概念,用于确保组件能够响应状态的变化并自动更新。
MobX:
Observer:
observer
是一个高阶组件(HOC),用于包装 React 组件。假设我们有一个简单的计数器应用,使用 MobX 和 observer
来管理状态:
import React from 'react';
import { observable, action } from 'mobx';
import { observer } from 'mobx-react';
// 创建一个 MobX store
class CounterStore {
@observable count = 0;
@action increment() {
this.count++;
}
@action decrement() {
this.count--;
}
}
const counterStore = new CounterStore();
// 使用 observer 包装组件
const Counter = observer(() => (
<div>
<h1>Count: {counterStore.count}</h1>
<button onClick={() => counterStore.increment()}>Increment</button>
<button onClick={() => counterStore.decrement()}>Decrement</button>
</div>
));
export default Counter;
问题: 组件没有响应状态变化重新渲染。
原因:
observer
包装。解决方法:
observer
包装。@action
或者 action.bound
来修改状态。// 确保组件被 observer 包装
const Counter = observer(() => (
<div>
<h1>Count: {counterStore.count}</h1>
<button onClick={() => counterStore.increment()}>Increment</button>
<button onClick={() => counterStore.decrement()}>Decrement</button>
</div>
));
通过以上方法,可以确保组件能够正确响应 MobX 状态的变化并自动更新。
领取专属 10元无门槛券
手把手带您无忧上云