美文网首页
vue3组件之间传值

vue3组件之间传值

作者: 刘金海_ | 来源:发表于2022-04-07 14:48 被阅读0次

    1.父子组件之间的传值:props

    //父组件
    <template>
      <Message  :msg="msg" />
    </template>
    <script setup>
    import Message from "./Message.vue"
     const msg= ref('给子组件的信息');
     //const msg = reactive(["给子组件的信息"])
    </script>
    //Message子组件
    <template>
        <div></div>
    </template>
    <script setup>
     //获取值  需要通过defineProps暴露出来
     const props = defineProps({
        msg: String,
        //msg:{
           //type:String,
           //default:''
        //}
      });
    console.log(props)
    </script>
    

    2.子组件向父组件传值emit

    //父组件
    <template>
      <Message  @getMsg="getmsg"  />
    </template>
    <script setup>
    import Message from "./Message.vue"
    const getmsg = (msg)=>{
      console.log(msg)
    }
    </script>
    //Message子组件
    <template>
        <div @click="postMsg">向父组件传值</div>
    </template>
    <script setup>
      const emit= defineEmits(["getMsg"])
      const postMsg=()=>{
        emit('getMsg','向父组件传值')
      }
    </script>
    

    3.父组件获取子组件的属性或者调用子组件方法ref

    //父组件
    <template>
      <Message  ref="message" />
    </template>
    <script setup>
    import Message from "./Message.vue"
    const message= ref(null)
    onMounted(() => {
        console.log(message.value.msg)
        message.value.showMsg()
    });
    </script>
    //Message子组件
    <template>
        <div></div>
    </template>
    <script setup>
      defineExpose({
        msg:''子组件属性值'',
        showMsg(){
          console.log('子组件方法')
        }
      });
    </script>
    

    4.provide/inject 启用依赖注入 实现跨级访问祖先组件的数据

    //父组件
    <template>
      <Message  />
    </template>
    <script setup>
    import Message from "./Message.vue"
    import { provide } from "vue"
    provide("msg", "父组件信息")
    </script>
    //Message子组件
    <template>
        <div></div>
    </template>
    <script setup>
     import { inject } from 'vue';
     let msg= ref()
     msg= inject('msg') //接收参数
     console.log(msg)
    </script>
    

    相关文章

      网友评论

          本文标题:vue3组件之间传值

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