## 前言 * 现在我们结合之前所学,将自定义组件、mock数据、api调用整合在一起。 * 拓展x-button组件,在外部传入参数,组件内部点击后调用api后将返回打印至控制台 ## 开始集成 1. 我们将Demo模块中的部分代码拷贝至x-button组件中 ![](https://img.kancloud.cn/4c/2a/4c2ad55ffd3aa99df5ad3029f10856d8_1294x1354.png) 2. 可以看到,现在是每次点击按钮后,进行调用接口,并且将返回打印在控制台中 3. 打开系统点击按钮查看控制台,点击两次按钮发现调用成功 ![](https://img.kancloud.cn/85/ef/85ef2abc82ee1a5236b982c2c733e5c5_2048x1516.png) ## 放上相关代码 * 希望大家都能把代码都手动敲出来,而不是直接复制粘贴 * `/views/demo/demo.vue` : ~~~ <template> <div> <h1>hello saber! im bladex!</h1> <x-button></x-button> </div> </template> <script> export default { name: "demo", data() { return { options: [], value: '' } }, created() { }, methods: { onChange() { console.log(this.value) }, } } </script> <style scoped> </style> ~~~ * `/components/demo/x-button.vue` : ~~~ <template> <div> <el-button type="primary" @click="handleSubmit">按钮点击</el-button> </div> </template> <script> import {getDetail, getTestDetail} from '@/api/demo/demo'; export default { name: 'x-button', methods: { async init() { const res = await getDetail(); if (res.data.success) { console.log(res.data.data); } else { console.log(res.data.msg); } const resTest = await getTestDetail(); if (resTest.data.success) { console.log(resTest.data.data); } else { console.log(resTest.data.msg); } }, handleSubmit() { console.log("按钮点击了"); const promise = this.init(); console.log(promise); } } } </script> <style scoped> </style> ~~~