vue3 父子组件传参

父向子传参: 

父组件:

<myAudio ref="myAudioOne" :myAudioUrl="musicSrc" @event1="changePlay"
  id="audioId"  v-if="musicSrc!=''"></myAudio>

import myAudio from './components/myAudio.vue'

    const myAudioOne=ref(null)

 state.musicSrc =  state.dataItem[0][0].resource

v-if的意思 等待接参,在参数没有传入时 不让它显示 保证musicSrc不会传过去是空

子组件:

  props: ['myAudioUrl'],

  setup(props, context) {

    const state = reactive({

myAudioUrl:'',

})

  state.myAudioUrl = props.myAudioUrl
}

子组件接入 参数props.myAudioUrl  挂载到页面上就OK了

子向父传:

    
 setup(props, context) {
const  go=()=>{


context.emit('event1', false)
}
}

用这个方法 emit 第一个从参数是方法名对应父组件里的@event1       第二个参数 是你所需要的传的数值,对象,数组

父组件:

 <myAudio ref="myAudioOne" @event1="changePlay"  id="audioId"  ></myAudio>

 @event1="changePlay"   用这个方法接

    const changePlay=(val) =>{
      state.isActive = !val
}

接住就OK了

父,子组件互调方法

父调子,

    <child   :value="value" ref="child" 
:options2='options2' @resetFields="resetFields"></child>

首先在引入的child写一个ref(例如此处是‘child’)

   this.$refs.child.init();  用ref的方法可以调起child的方法,

同时也可以使用父传子值然后利用子组件的watch方法(根据传值不同调起不同方法),此方法比较简单不粘代码了

子调父,

可以使用ref   

 this.$parent.init()    此处的$parent就是指向父组件  init就是父组件的方法

也可以使用$emit向父组件传值,当传入某个特定值时让父组件调起某个方法,使用此方法可看上方子如何向父传值,在父组件接收值的方法里写if判断即可

猜你喜欢

转载自blog.csdn.net/weixin_48091030/article/details/127805130