在Vue中,组件传参

在Vue中,组件传参主要有以下几种方式:

父组件向子组件传递数据使用props。

使用$emit来触发事件并传递数据到父组件。

使用v-model进行双向数据绑定。

使用provide和inject实现跨多层级的组件传递数据。

以下是这些方式的简单示例:

使用props:

父组件:

<template>
  <ChildComponent :parentData="dataFromParent" />
</template>
 
<script>
import ChildComponent from './ChildComponent.vue';
 
export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      dataFromParent: 'Hello from parent'
    };
  }
};
</script>

子组件:

<template>
  <div>{{ parentData }}</div>
</template>
 
<script>
export default {
  props: ['parentData']
};
</script>

使用$emit:

子组件:

<template>
  <button @click="sendToParent">Send to Parent</button>
</template>
 
<script>
export default {
  methods: {
    sendToParent() {
      this.$emit('childEvent', 'Data from child');
    }
  }
};
</script>

父组件:

<template>
  <ChildComponent @childEvent="receiveFromChild" />
</template>
 
<script>
import ChildComponent from './ChildComponent.vue';
 
export default {
  components: {
    ChildComponent
  },
  methods: {
    receiveFromChild(data) {
      console.log('Data received from child:', data);
    }
  }
};
</script>

使用v-model:

子组件:

<template>
  <input :value="value" @input="updateValue($event.target.value)" />
</template>
 
<script>
export default {
  props: ['value'],
  methods: {
    updateValue(value) {
      this.$emit('input', value);
    }
  }
};
</script>

父组件:

<template>
  <ChildComponent v-model="message" />
</template>
 
<script>
import ChildComponent from './ChildComponent.vue';
 
export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      message: ''
    };
  }
};
</script>

使用provide和inject:

父组件:

<template>
  <ChildComponent />
</template>
 
<script>
import ChildComponent from './ChildComponent.vue';
 
export default {
  components: {
    ChildComponent
  },
  provide() {
    return {
      parentData: 'Data from parent'
    };
  }
};
</script>

子组件:

<template>
  <div>{{ parentData }}</div>
</template>
 
<script>
export default {
  inject: ['parentData']
};
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值