UNPKG

ola-toolkit

Version:

ola 开发工具套件

124 lines (85 loc) 2.65 kB
# Model Model 用以创建一些范式的数据描述对象,在某个特定的场景下,这些对象拥有满足多数业务处理模式的预定义的 effects 和 reducers ## Model.API 创建 ajax 发起 (fetch) --- 等待 --- 响应成功 (success) / 响应失败 (fail) 模式的数据描述对象 在 models/index.js 中如下定义: ```javascript import {Model} from 'ola-toolkit'; export default () => ({ asyncList: Model.API.takeLatest({ url: '/user/list', method: 'GET', }), }); ``` 则在组件中可以派发一个获取 user list 的请求: ```javascript dispatch({ subject: 'asyncList', act: 'list', }) ``` 通过 `connect` 从 store 中取出数据 (以 immutable 为例) ```javascript @connect(state => ({ payload: state.getIn(['asyncList', 'payload']), loading: state.getIn(['asyncList', 'loading']), error: state.getIn(['asyncList', 'error']), })) ``` ## API 以下文档中的 `SagaHelpers` 即 Saga 辅助函数,主要有下面两种: - takeEvery 获取每一个派发的行为 - takeLatest 获取最后一次派发的行为 ### Model.API - Model.API\[SagaHelpers\]\([Ajax RequestConfig](/docs/ola-toolkit/component/ajax)\) 创建一个 API 调用类型的数据描述对象 可派发 act: | act | 说明 | payload | | --- | --- | --- | | fetch | 发起请求 | [Ajax RequestConfig](/docs/ola-toolkit/component/ajax) | | success | 响应成功 (无需手动派发) | response | | fail | 响应失败 (无需手动派发) | exception | | update | 更新数据 | newPayload | | clear | 清除数据 | - | 数据节点: | key | 说明 | 数据类型 | | --- | --- | --- | | loading | 是否处于请求中 | boolean | | loaded | 是否加载完成 | boolean | | error | 异常信息 | Immutable \| object | | payload | 响应数据 | Immutable \| object | #### retry 重试次数 `default`: 0 当请求失败时,将尝试进行 retry 次重试,直至 API 流程 resolve (act: success) ```javascript serviceList: Model.API.takeLatest({ url: '/api/service/list', retry: 3 }) ``` #### urlVars url 路径变量替换 当需要使用动态路径时,可以在 `url` 配置项中使用 `:var` 占位符: ```javascript serviceList: Model.API.takeLatest({ url: '/api/service/:id', params: {} }) ``` 在 dispatch 时,通过 urlVars 对 url 中的变量进行配置: ```javascript this.props.dispatch({ subject: 'serviceList', act: 'fetch', urlVars: { id: 3, // url: /api/service/3 } }); ``` ### Model.Helper - createBasicApiReducer() 创建 API 调用类型的 reducers - initialApiState API 调用类型 reducers 的初始值