美文网首页
12、Vue_封装API、插槽slot/v-slot

12、Vue_封装API、插槽slot/v-slot

作者: 猪儿打滚 | 来源:发表于2019-09-26 14:25 被阅读0次

一、封装API

一些常用的方法可以封装成API,然后进行调用

  • 例子 :把之前的axios的一个请求封装成api
    1.在创建/src/api/api.js文件
import axios from 'axios'

var host = 'https://dog.ceo';
// 定义成箭头函数,export:导出,提供给他人调用;const  dogs:把dogs定义成常量,为函数名
export const dogs = () => {
    // return axios.get('https://dog.ceo/api/breeds/image/random')
    // return axios.get(url: host+'/api/breeds/image/random')
    return axios.get(url: '${host}/api/breeds/image/random')
};

2.创建个vue文件,进行调用:

<template>
    <div>
        <!--        <button v-on:click="send">发出api封装的请求</button>-->
        响应:<p>{{data}}</p>
        <br>
        图片:
        <el-image :src="url" fit="cover"></el-image>
    </div>
</template>

<script>
    import {dogs} from '../api/api.js'

    export default {
        name: "axios_api",
        data() {
            return {
                data: null,
                url: null
            }
        },
        // 该方法自动触发执行,生命周期的钩子事件
        mounted() {
            // 调用定义好的函数
            dogs()
                .then(
                    response => {
                       // 对响应内容进行提取和赋值(每个接口的处理方式都不一样,这里难封装)
                        this.data = response.data;
                        this.url = response.data.message
                    }
                )
                .catch(function (error) {
                    console.log(error)
                });
        }
    }
</script>

<style scoped>

</style>

3.结果: axios_api

二、v-slot插槽

v-slot:vue2.6以后推荐使用v-slot

  • 作用:在父组件中定义v-slot插槽,可以将父组件定义的模块渲染到子组件。所以,如果父组件想要去展示一些需要在data中写入属性的数据,就可以使用该插槽。注意:属性名必需和v-slot中的名称一样
  • 例子
    首先看原始代码
    1.父组件App.vue
<template>
    <div id="app">
        <img alt="Vue logo" src="./assets/logo.png">
        <!-- 调用test_slot子组件-->
        <test_slot>
            <!-- 把这里的值,传给子类中属性名为a的slot插槽;这块内容会显示出来  -->
            <template v-slot:a>
                this is a
            </template>
           <!-- 这里的内容没有传给插槽,所以不会显示 -->
            test_slot标签里的内容
        </test_slot>
    </div>
</template>


<script>
    import test_slot from "@/components/test_slot";

    export default {

        name: 'app',
        components: {
            test_slot
        }
    }
</script>

<style>
    #app {
        font-family: 'Avenir', Helvetica, Arial, sans-serif;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        text-align: center;
        color: #2c3e50;
        margin-top: 60px;
    }
</style>

2.子组件test_slot.vue

<template>
    <div>
        {{ user.firstName }}
         <!-- 调用名字为a的插槽 -->
        <slot name="a"></slot>
    </div>
</template>

<script>
    export default {
        name: "v-slot",
        data() {
            return {
                user: {
                    firstName: 'lzl',
                }
            }
        }
    }
</script>

<style scoped>

</style>
结果: 显示插槽a的内容
  • data中给插槽的变量传值:App.vue
<template>
    <div id="app">
        <img alt="Vue logo" src="./assets/logo.png">
        <!-- 调用test_slot子组件-->
        <test_slot>
            <template v-slot:a>
                this is a
                {{a.name}}
            </template>
           <!-- 这里的内容没有传给插槽,所以不会显示 -->
            test_slot标签里的内容
        </test_slot>
    </div>
</template>


<script>
    import test_slot from "@/components/test_slot";

    export default {

        name: 'app',
        data() {
            return {
                // 属性名字需要和v-loft的名字一样
                a: {
                    name: 'APP的lzl'
                }
            }
        },
        components: {
            test_slot
        }
    }
</script>

<!-- 样式渲染 -->
<style>
    #app {
        font-family: 'Avenir', Helvetica, Arial, sans-serif;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        text-align: center;
        color: #2c3e50;
        margin-top: 60px;
    }
</style>
结果: image.png

相关文章

  • 12、Vue_封装API、插槽slot/v-slot

    一、封装API 一些常用的方法可以封装成API,然后进行调用 例子 :把之前的axios的一个请求封装成api1....

  • 插槽

    默认插槽: 具名插槽:slot name='footer' 作用域插槽:v-slot===slot-scope 默...

  • Vue之深入理解插槽—slot, slot-scope, v-s

    Vue 2.6.0 以前Vue 2.6.0 以后具名插槽 slot具名插槽 v-slot作用域插槽 slot-sc...

  • vue3中的插槽

    插槽 默认插槽 具名插槽,v-slot可以简写为# 动态插槽 #[dynamicSlotName] 作用域插槽(...

  • vue slot插槽

    v-slot 插槽的用法: 单个slot内容时: 子组件: 父组件: 多个slot内容时(具名插槽): 子组件: ...

  • Vue 小知识点汇总

    插槽slot 如何使用slot的同时传数据(v-slot:name="value") situation: 父页面...

  • vue插槽slot详解

    插槽分类:具名插槽与作用域插槽。在新版中(2.6.0)统一都叫v-slot指令,老版中称之为slot与slot-s...

  • Vue3.0 组件的核心概念_插槽

    Vue 在 2.6 版本中,对插槽使用 v-slot 新语法,取代了旧语法的 slot 和 slot-scope,...

  • 18、Vue3 作用域插槽

    作用域插槽:让插槽内容能够访问子组件中,vue2中作用域插槽使用slot-scope,vue3中使用v-slot ...

  • Vue - 具名插槽和作用域插槽

    slot(插槽)可以理解为占位符 一. 具名插槽(使用新的v-slot语法) 直接看使用的例子: 注意点:1. 子...

网友评论

      本文标题:12、Vue_封装API、插槽slot/v-slot

      本文链接:https://www.haomeiwen.com/subject/qmaiuctx.html