• 技术文章 >web前端 >Vue.js

    实例说明vue3中setup参数attrs,slots,emit是什么?

    藏色散人藏色散人2022-08-09 10:59:26转载827
    文档看了很多遍, 依然是没搞清除这些是什么,就手动写了一个例子帮助自己理解:

    home.vue

    <template>
      <div class="home">
        <img alt="Vue logo" src="../assets/logo.png" />
        <HelloWorld msg="Welcome to Your Vue.js App" proper="1" @custome="handler">
          <template v-slot:one> {{ home }} - 子组件插槽的数据: </template>
        </HelloWorld>
      </div>
    </template>
    <script>
    import HelloWorld from "@/components/HelloWorld.vue";
    export default {
      name: "Home",
      data() {
        return {
          home: "主页",
        };
      },
      components: { HelloWorld },
      methods: {
        handler(args) {
          console.log("子组件传递的参数:", args);
        },
      },
    };
    </script>

    Helloworld.vue

    <template>
      <div class="hello">
        <h1>{{ msg }}</h1>
        <span>这里是插槽内容:</span>
        <slot slotone="01" name="one"></slot>
        <slot slottwo="02" name="two"></slot>
        <hr />
    
        <button @click="$emit('custome', '参数')">点击传递参数</button>
      </div>
    </template>
    <script>
    export default {
      name: "HelloWorld",
      props: {
        msg: String,
      },
      setup(props, context) {
        console.log("props:", props);
        console.log("context:", context);
        const { attrs, slots, emit } = context;
        console.log("attrs:", attrs);
        console.log("slots:", slots);
        console.log("emit:", emit);
      },
    };
    </script>

    控制台输出:

    props: Proxy {msg: "Welcome to Your Vue.js App"}
    context: {expose: ƒ}
    attrs: Proxy {proper: "1", __vInternal: 1, onCustome: ƒ}
    slots: Proxy {_: 1, __vInternal: 1, one: ƒ}
    emit: (event, ...args) => instance.emit(event, ...args)

    继续展开:

    大前端零基础入门到就业:进入学习


    结合图里面圈起来的部分,我大概得出的结论

    想知道以上4条结论理解是否正确。

    大致是对的。唯有第一点稍稍有点儿问题,context 不是这个组件的真正对象,只是在 setup 时带了其中一部分信息的玩意儿,执行 setup 时这个组件对象还没被创建出来呢。

    不知道题主以前接没接触过 Vue2 或者 Vue3 的 Options API 写法,要是直接上来就是 Vue3 Composition API 确实不太容易理解。

    后面仨其实就是 Options API 里的 this.$attrsthis.$slotsthis.$emit,因为 setup 时还没有 this 呢,所以变成了这样写。

    【相关推荐:vue.js视频教程

    以上就是实例说明vue3中setup参数attrs,slots,emit是什么?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    快捷开发Web应用及小程序:点击使用

    支持亿级表,高并发,自动生成可视化后台。

    专题推荐:vue3 vue.js
    上一篇:聊聊vue3中setup函数的返回值 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 简析Vue3的setup函数(入口点)• 快速了解Vue3的setup执行时机(附代码示例)• 聊聊vue3中setup函数的返回值• 详解vue3中setup函数的参数-props和context
    1/1

    PHP中文网