VUE祖孙组件之间的传递

说明:vue祖孙组件就是祖宗组件包含父组件,父组件包含孙组件,那如何把祖宗组件的值直接传递给孙子组件呢?

知识点

1.在祖宗组件使用provide对象,声明参数并赋值

2.在孙子组件使用inject对象,接收参数。并在页面显示值

代码示例

祖宗组件

<template>
  <div>
    <Fu></Fu>
  </div>
</template>

<script>
import Fu from "./Fu";
export default {
  name: "Zu",
  components: {Fu},
  /*对象式写法,缺点,无法传递data中的值*/
  /*provide:{
    name: '张三',
    age: 23
  },*/
  /*函数式写法,可以满足data中的值传递给孙子级*/
  provide(){
    return{
      name: '张三',
      age: 23,
      height: this.height
    }
  },
  data(){
    return{
      height: 170
    }
  }
}
</script>
<style scoped>
</style>

父级组件

<template>
  <div>
    <Sun></Sun>
  </div>
</template>

<script>
import Sun from "./Sun";
export default {
  name: "Fu",
  components: {Sun}
}
</script>
<style scoped>
</style>

孙级组件

<template>
  <div>
    <h2>姓名:{{name}},年龄:{{age}},身高:{{height}}</h2>
  </div>
</template>

<script>
export default {
  name: "Sun",
  inject:['name','age','height']
}
</script>
<style scoped>
</style>

结果显示

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3中,可以使用Props和Events来实现祖孙组件之间的传值。 1. Props:父组件可以通过props将数据传递给子组件。在子组件中,可以通过props选项接收这些数据。具体步骤如下: 父组件: ```vue <template> <div> <ChildComponent :message="message" /> </div> </template> <script> import ChildComponent from './ChildComponent' export default { components: { ChildComponent }, data() { return { message: 'Hello from parent component' } } } </script> ``` 子组件: ```vue <template> <div> <p>{{ message }}</p> </div> </template> <script> export default { props: ['message'] } </script> ``` 在父组件中,使用冒号(:)绑定属性,并将数据传递给子组件。子组件中通过props选项接收这个属性。 2. Events:子组件可以通过事件将数据传递给父组件。在子组件中,可以使用$emit方法触发一个自定义事件,并传递数据给父组件。具体步骤如下: 父组件: ```vue <template> <div> <ChildComponent @update-message="updateMessage" /> <p>{{ message }}</p> </div> </template> <script> import ChildComponent from './ChildComponent' export default { components: { ChildComponent }, data() { return { message: '' } }, methods: { updateMessage(newMessage) { this.message = newMessage } } } </script> ``` 子组件: ```vue <template> <div> <button @click="sendMessage">Send Message</button> </div> </template> <script> export default { methods: { sendMessage() { this.$emit('update-message', 'Hello from child component') } } } </script> ``` 在子组件中,使用@click绑定一个点击事件,并在事件处理程序中使用this.$emit方法触发自定义事件。父组件中通过@update-message监听这个事件,并在对应的事件处理函数中更新父组件的数据。 这样就实现了祖孙组件之间的传值。父组件通过props将数据传递给子组件,子组件通过事件将数据传递给父组件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值