组件间的传值

组件之间的数据共享

1、父子关系

  • 父组件向子组件共享数据需要使用 自定义属性

    (数据定义在父组件,子组件用自定义属性接收父组件传来的数据)

  • //父组件
    <Father :msg="message" :user="username"></Father>
    data() {
      return {
        message: 'HELLO',
        username: '小明'
      }
    }
    
    //子组件
    //(不要修改props里面的值)
    <Son>接收父组件传过来的数据{{msg}}</Son>
    
    <script>
    
      export default  {
         props:['msg','user']
      }
      
     </script>
    
    

在这里插入图片描述

  • 子组件向父组件传值,需要使用 自定义事件

​ (子组件使用this.$emit( )触发自定义事件传递数据)

  • //子组件
    <script>
    
    export default {
      data() {
        return {
          num:0
        }
      },
      methods: {
        add() {
           this.num ++
           //修改num的值时,通过$emit()触发changNum这个事件来传递num这个          变量的值
           this.$emit('changeNum',this.num)
        }
      }
    }
    
    </script>
    
    
    //父组件
    <Father @changeNum="getNum"></Father>
    
    <script>
     
    export default {
       data() {
          return {
             //接收
             getNumFromSon: 0 
          }
       },
       methods: {
         //获取子组件传递过来的数据
         getNum(val) {
            this.getNumFromSon = val
         }
       }
    }
    
    </script>
    
    

在这里插入图片描述

2、兄弟关系

  • EventBus

  • EventBus使用步骤:

    • 创建eventBus.js模块,并向外共享一个Vue的实例对象
    • 在数据发送方,引用eventBus.js文件,用**bus.$emit(‘事件名称’,要发送的数据)**方法触发自定义事件来发送数据
    • 在数据接收方,引用eventBus.js文件,用**bus.$on(‘事件名称’,事件处理函数)**方法注册一个自定义事件来接收数据
  • //数据发送方
    import bus from '@/eventBus.js'
    
    <script>
     
     export default {
       data() {
         return {
           date: '2021-8-5'
         }
       },
       methods: {
          send() {
            bus.$emit('dateEvent',this.date)
          }
       }
     }
     
     </script>
     
     
     // eventBus.js文件
     import Vue from 'vue'
     //向外共享一个Vue的实例对象
     export default new Vue()
     
     
     //数据接收方
     import bus from '@/eventBus.js'
     
     <script>
     
     export default {
       data() {
         return {
           dateFrom:''
         }
       },
       created() {
          this.getDate()
       },
       methods: {
          getDate() {
            bus.$on('dateEvent',val=> {
               this.dateFrom = val
            })
          }
       }
     }
     
     </script>
    

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 React 中,有多种方式可以实现组件的值传递。以下是一些常见的方式: 1. Props(属性):通过在父组件中给子组件传递属性,子组件可以通过 props 对象来获取这些属性值。父组件中的属性变化会触发子组件的重新渲染。 2. State(状态):每个组件都有自己的状态对象,可以通过 setState 方法来更新状态并触发重新渲染。父组件可以通过 props 将状态值传递给子组件,并通过回调函数来修改父组件的状态。 3. Context(上下文):Context 提供了一种在组件树中共享数据的方式,可以在父组件中创建一个 Context 对象,并通过 Provider 组件将数据传递给子组件。子组件可以通过 Consumer 组件或 useContext 钩子来访问这些数据。 4. Redux 或其他状态管理库:使用 Redux 或其他状态管理库可以将应用的状态集中管理,并通过提供的 API 来进行状态的读取和更新。这样不同组件可以共享和传递状态,而不需要通过 props 层层传递。 5. 发布订阅模式或事件总线:可以使用发布订阅模式或事件总线来实现组件的解耦和通信。一个组件可以发布一个事件,其他组件可以订阅该事件并执行相应的操作。 这些是常见的组件传值方式,选择哪种方式取决于具体的场景和需求。在实际开发中,根据项目的规模和复杂度,选择合适的方式来进行组件的数据传递。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值