MobX 中的@computed 和@action 有什么区别?

What's the difference between @computed and @action in MobX?

在 MobX 中 @computed@action 有什么区别?

它们都是函数,它们有什么区别?

差异在 documentation 中说明。

动作

Usage: action(fn) or action (annotation)

Use on functions that intend to modify the state.

计算

Usage: computed(fn, options?) or computed(options?) (annotation)

Creates an observable value that is derived from other observables, but won't be recomputed unless one of the underlying observables changes.

所以 computed 除了观察状态之外什么都不做。 codesandbox

动作实际修改状态。 action example

@computed 当函数将 'compute' 来自现有信息的 return 值时使用。

@action用于会改变现有信息(状态)的函数,提示'observers'访问最新版本的相关'observable(s)'.