actions.ts - 图1该文件声明了三个基础的接口

Action接口声明

  1. export interface Action<T = any> {
  2. type: T
  3. }
  • 一个action是一个简单对象,它代表改变动作的意图
  • Actions 是将数据导入store的唯一途径. 任何数据,无论是来自UI事件、网络回调还是其他源,例如WebSockets,最终都需要作为action发出
  • Actions必须要有一个type字段, 该字段代表要执行的操作的类型,Types可以作为常量声明或者从其他模块导入
  • 最好使用字符串来代表type,而不是使用Symbols,因为字符串是可以序列化的
  • 除了type外, action对象的结构实际上取决于你

    AnyAction接口声明

    ```javascript export interface AnyAction extends Action { // 允许在action中定义任何额外属性

}

  1. - 接受任何其他属性的action类型,主要用于“Reducer”类型
  2. <a name="WjcV2"></a>
  3. ### ActionCreator接口声明
  4. ```javascript
  5. export interface ActionCreatorsMapObject<A = any, P extends any[] = any[]> {
  6. [key: string]: ActionCreator<A, P>
  7. }
  • action creator就是创建action的函数
  • action是信息的有效载荷,action creator是创建action的工厂
  • 调用一次action creator只会生成一个action,但是不会触发(dispatch)它.你需要调用store的dispatch方法来真正触发改变
  • 如果一个action creator需要读取当前的状态, 执行API调用或者引起副作用,就像一个路由转换.它需要返回一个异步action而不是一个action