1. Action定义
Actions是中包含的是我们发送到store中的数据,或者触发store中的数据更新,而且在redux中actions是store中数据更新的唯一来源。我们使用store.dispatch()来发送actions。
下面给出一个action的示例:
const ADD_TODO = 'ADD_TODO'
{
type: ADD_TODO,
text: 'Build my first Redux app'
}
-
由示例我们可以看出,action必须定义为JavaScript对象,其中:
- type:该字段是必须存在的,用来描述action的类型,而且该字段的值在整个应用中必须是唯一的。
- text:该字段是可选的,用来描述传递到store中的数据。
当然,除了type之外,你可以将action定义成任何你想要的结构。但是我们最好还是依据 Flux Standard Action来定义action。
2. Flux Standard Action
-
在Flux标准中action的定义如下:
- 一个JavaScript基本对象。
- 必须含有type属性。
- 可以包含error属性。
- 可以包含payload属性。
- 可以包含meta属性。
action不能包含除了type, payload, error和meta之外的任何属性。
3. redux-actions
为了创建出更加符合标准的action,我们可以借助redux-actions来完成。
使用方式为:
createAction(type, payloadCreator = Identity, ?metaCreator)
其中,payloadCreator必须是方法、undefined或者null。如果payloadCreator为undefined或null,则默认为一个恒等方法。
例如:
let increment = createAction('INCREMENT', amount => amount);
// same as
increment = createAction('INCREMENT');
expect(increment(42)).to.deep.equal({
type: 'INCREMENT',
payload: 42
});
更多信息参照redux-actions。