首页 > 其他分享 >vue3组件通信,网上一大堆,这里直说常用的两个,props,emit

vue3组件通信,网上一大堆,这里直说常用的两个,props,emit

时间:2022-12-02 11:33:31浏览次数:40  
标签:name props state context vue3 组件 emit

props(父传子,多用于 子组件的数据渲染)

【父】
<div>
    <comp-son :name="name" :age="age" />  //向子组件传值
</div>

setup() {
        const state = reactive({
            name: "Jack",
            age: 18  
        })
        return {
            ...toRefs(state)
        }
    },
【子】
export default {
    name: "CompSon",
    // props: ['name', 'age'],  //接收父组件的传值:简写形式
    props: {  //接收父组件的传值:详细形式
        name: String,  //传入值类型
        age: {
            type: Number,  // 传入值类型
            required: true,  // 是否必须
            default: 18,  // 该属性没有进行传值时的默认值
        }
    },
    setup(props, context) {
        console.log(props.name)
        console.log(props.age)

    },
};

emit(子传父,多用于 子组件修改父组件的值)

【父】
<div>
    <comp-son @setName="setName" />  //向子组件传函数
</div>

setup() {
        const state = reactive({
            name: "Jack",
        })

        function setName(name){
            state.name = name
        }

        return {
            ...toRefs(state)
        }
    },
【子】
export default {
    name: "CompSon",
    setup(props, context) {
        context.emit("setName", "Bob")  //接收父组件函数并调用
        // context可获取三个属性,分别为context.attrs、context.emit、context.slots
    },
};

拓展

v-model 子组件给父组件传值

这个v-model其实是个语法糖。就是当子组件emit触发的事件名固定写死为update的时候,可以使用v-model去监听。

标签:name,props,state,context,vue3,组件,emit
From: https://www.cnblogs.com/huihuihero/p/16943926.html

相关文章

  • 转 vue3讲义 知识点 整理文档PPT
      vue3自学理论笔记 vue3讲义  知识点  整理文档PPT项目不忙时就学习新内容,知识不全。 1.vue2使用es5中的object.definedPropert对数据进行双向绑定......
  • Vue2+Vue3 - $attrs 的几种用法(1个或多个根元素、Options API 和 Composition API)
    使用Vue开发时,肯定会接触到组件的概念,无可避免的也会接触到组件通讯的概念。在Vue2中除了$attrs外,还有$listeners;Vue3把$listeners合并到$attrs里了。......
  • Vue3实现前端权限级别按钮控制
    编写permission.vue组件中的按钮设置为:增加、修改和删除三个按钮,为了让button按钮disabled时,可以让tooltip继续有效,在button外层加了个span。为了通过自定义指令中方便控......
  • vue3实战
    1.vue官方文档1.创建项目方式一:vite(推荐)npminitvue@latest会有如下提示Needtoinstallthefollowingpackages:create-vue@3Oktoproceed?(y)y------......
  • vue3使用记录
    1.路由跳转<scriptsetup>import{useRouter}from"vue-router";constrouter=useRouter();functiontoDetail(){router.push({path:"/detail",});......
  • vue3状态流转记录
    刚用vue3的时候觉得习惯了之后非常爽,比vue2比起来要灵活,ref、reactive等新api写几个页面也基本理解用法了。但是逐渐深入后发现遇到一些疑难问题的时候,排查起来非常困难,其......
  • [Vue3-10]表单数据绑定
    1.输入框2.单选多选3.下拉选择......
  • [Vue3-09]事件处理
    1.传参2.多事件绑定......
  • 读 Vue3 API 记录
    应用实例创建一个应用const app=createApp()将应用挂载在一个容器元素中  app.mount('#app')卸载一个已挂载的应用app.unmount()提供一个值,可以在应用中的所有后......
  • vue3 通过ref 找到 dom实例
    页面<el-tab-panelabel="用户名登录"><el-form:model="form"label-position="right"label-width="70px"......