数据流(data stream)是一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。 百度百科
在谈一谈mock数据一文中有解释到为什么会有mock数据。
直接在mock文件中定义一个数据对象:
export default {
'POST /api/list':
[
{
id: '123',
name: 'aolyu',
age: 17,
},
{
id: '456',
name: 'azhen',
age: 18,
},
],
};
POST
:表示的的过去这个数据的请求方式(也可以是GET
)/api/list
:在外调用的接口(后面会讲)。import list from './json/list.json'; // 从json引入数据对象
export default {
'POST /api/list': list
};
和3.1.1.1.相比,此时的代码清晰了许多。
注意:json文件中的数据定义需要严格按照json格式,否则会报错。
使用POST
方式,定义list
路径,表示外部可以通过list
路径同时使用POST
请求方式,就可以获取这里的list数据。
在前面已经定义好数据,并且提供了获数据的方式,那么这里讲解如何得到它们。
alita项目存在src/models
文件,它是专门用于从服务端获取数据并且把数据推送到页面中(可以理解为中间传递者)。
通过3.1.2.提供的请求方法和路径,使用request
来请求即可,如:
const data = yield request(
'/api/list', // 请求路径(前面已经提供出来)
{ method: 'POST' } // 请求方式
);
services/api.ts
services/api.ts
文件,这样便于维护。export async function queryList(): Promise<any> {
return request('/api/list', {
method: 'POST',
});
}
说明:
async
:表示异步请求。
queryList
:对外提供一个调用这个请求的方法(可以理解为将请求封装起来,方便使用)。
models
中使用这个定义好的请求方式:const data = yield call(queryList); // queryList需要与上一段代码对应。
现在已经获取到服务端传来的数据了,那么这里开始处理把数据送到页面。
put
是将刚才获得的数据data
存到state
当中。(state的状态可以判断控件是否已更改,是否需要重新渲染)
yield put({
type: 'save',
payload: {
lists: data,
},
});
在这之前需要在state
提前定义lists
变量,它与IndexModelState
绑定,所以在页面导入IndexModelState
就可以可以在页面当中获取并使用(这里未讲其中的绑定情况,具体可看真实项目中的name
属性)。
固定使用方式:
reducers: {
save(state, action) {
return {
...state,
...action.payload,
};
},
},
将数据推到页面中。
通过上面所有步骤,现在已经把数据传到页面。
const { lists } = index;
当然这个数据怎么使用就需要看具体的项目了。
本人学历有限,有问题的地方希望诸位给出指导,谢谢