## 一、简介
> fetch,XMLHttpRequest的一种替代方案。相比之下,fetch更优。与XMLHttpRequest(XHR)类似,fetch()方法允许你发出AJAX请求。区别在于Fetch API使用Promise,因此是一种简洁明了的API,比XMLHttpRequest更加简单易用。(目前Chrome浏览器已经完美支持。)
### 1.1 `fetch`的基本使用
> `fetch`是全局量window的一个方法, 第一个参数是URL:
```
// url(必须),options(可选)
fetch(url,{
method:'get'
})
.then(response=>response.json())
.then(json=>{
// 处理数据结果
console.log(json)
})
.catch(err=>{
console.log(err)
})
```
- 注意:`response`回调结果对象本身有一个`json()`方法,用于将原始数据转换成 JavaScript 对象,如果需要请求JSON数据就可以调用它。
### 1.2 `fetch`请求 request
#### 1、请求头 request header
- 自定义请求头(通过`new Headers()`来创建请求头):
1. `new Headers()` :创建请求头对象
2. `headers.append(key,value)` :添加请求头
3. `headers.has(key)` :判断是否有请求头
4. `headers.get(key)` :获取请求头
5. `headers.set(key,value)`:修改请求头
6. `headers.delete(key)`:删除请求头
```
// 创建一个空的headers对象
var headers = new Headers();
// 添加(append)自定义请求头信息
headers.append('Content-Type','text/plain');
headers.append('X-My-Custom-Header', 'CustomValue');
// 判断(has),获取(get),以及修改(set)请求头
headers.has('Content-Type'); // true
headers.get('Content-Type'); // "text/plain"
headers.set('Content-Type', 'application/json');
// 删除某条请求头信息(delete)
headers.delete('X-My-Custom-Header');
// 创建对象时设置初始化信息
var headers = new Headers({
'Content-Type': 'text/plain',
'X-My-Custom-Header': 'CustomValue'
});
// 将headers对象添加到request方法中
var request = new Request(url,{
headers:new Headers({'Content-Type':'text/plain'})
})
fetch(request).then(res=>{/*处理响应逻辑*/})
```
#### 2、Request简介
> Request 对象表示一次 fetch 调用的请求信息。传入 Request 参数来调用 fetch, 可以执行很多自定义请求的高级用法:
* `method` - 支持 GET, POST, PUT, DELETE, HEAD
* `url` - 请求的 URL
* `headers `- 对应的 Headers 对象
* `referrer` - 请求的 referrer 信息
* `mode `- 可以设置 cors, no-cors, same-origin
* `credentials `- 设置 cookies 是否随请求一起发送。可以设置: omit, same-origin
* `redirect` - follow, error, manual
* `integrity` - subresource 完整性值(integrity value)
* `cache` - 设置 cache 模式 (default, reload, no-cache)
- 示例:
```
var request = new Request(url,{
method:'post',
mode:'cors',
redirect:'follow',
headers:new Headers({
'Content-Type':'text/plain'
}),
body:JSON.stringify({ //请求参数体
username:admin,
password:123456
})
})
// 发送请求
fetch(request)
.then(res=>{/*处理结果*/})
```
##### 2.1
- 一、安装与使用
- 二、JSX介绍
- 三、React渲染
- 四、组件Components
- 4.1 定义组件
- 4.2 复合组件
- 4.3 React创建组件的三种方式及其区别
- 五、Props(属性)和State(状态)
- 5.1 Props属性
- 5.2 State状态
- 5.3 组件间的通信
- 5.4 单向数据流&事件
- 5.5 Refs属性
- 六、React生命周期
- 七、React组件应用场景
- 7.1 条件渲染
- 7.2 列表渲染和Key
- 7.3 表单组件
- 八、React-router初识
- 8.1 React-router主要组件
- 九、项目中的问题记录
- 9.1 antd+react项目初体验
- 9.2 fetch请求
- 9.3 简单项目的规范
- 十、redux简介&使用
- 10.1 基本概念和API
- 10.0 踩坑记录
- 10.2 react-redux