组件定义
组件注册
父传子:使用 props
子传父:使用事件
借助一个中间对象,来实现数据的挂载及传递:以事件的方式实现,通过绑定自定义事件来挂载数据并处理数据,通过触发事件的执行来传递数据。借助的中间对象实际上是一个空的 Vue 实例
const bus = new Vue()在需要接收数据的组件中绑定事件(入),使用 bus.$on(事件名称,事件处理程序)
在需要传递数据的组件中触发事件(出),使用 bus.$emit(事件名称,传递输入)
组件从创建到消亡的整个过程
在生命周期中,利用 钩子函数 可以执行额外的一些操作
create 阶段
beforeCreate()
created()
通常在 created 钩子函数中发起异步请求(ajax)
mount 阶段
beforeMount()
mounted()
通常要使用页面中挂载的 DOM 元素,到该钩子函数中获取
update 阶段
beforeUpdate()updated()destroy 阶段
beforeDestroy()destroyed()Fetch API
发送请求或者获取资源,需要使用 WindowOrWorkerGlobalScope.fetch() 方法,fetch() 必须接受一个参数——资源的路径。无论请求成功与否,它都返回一个 Promise 对象,resolve 对应请求的 Response,一旦 Response 被返回,就可以使用一些方法来定义内容的形式(比如使用 .json() 方法获取 JSON 格式的数据),以及应当如何处理内容。
fetch('http://jsonplaceholder.typicode.com/todos') .then(res => { console.log('response:', res) return res.json() }) .then(data => { console.log('data:', data) // 后继数据处理逻辑 data = data.filter(item => item.userId === 2) console.log('filter: ', data) }) .catch(err => console.log(err))Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
const request = axios.create({ baseURL: 'http://jsonplaceholder.typicode.com' }) // 响应拦截 request.interceptors.response.use(res => { if (res.status === 200) { return res.data // if (res.data.res_code === 0) { // return res.data.res_body // } // return Promise.reject(res.data) } return Promise.reject(res) }) // 发起请求 request.get('/todos') .then(res => console.log(res)) request.get('/users') .then(res => console.log(res))三种状态:pending(等待)、fulfilled(成功)、rejected(失败)
new Promise((resolve, reject) => {
// 通常执行异步任务
// 在调用 resolve/reject 函数前 Promise 的状态为 pending
// 调用 resolve 是将状态修改为 fulfilled
// 调用 reject 是将状态修改为 rejected
})
Promise.prototype.then(onFulfilled, onRejected)
Promise.prototype.catch(onRejected)
Promise.all()
Promise.resolve()
Promise.reject()