vue2的三种传值方式之父传子、子传父、兄弟共享数据

本文详细探讨了Vue2中常见的三种数据传递方式:父组件向子组件传递数据、子组件向父组件传递数据以及兄弟组件间共享数据的方法。通过实例解析,帮助开发者更好地理解和掌握这些技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue2的三种传值方式之父传子、子传父、兄弟共享数据

1. 父传子

<!-- 父组件 -->
<template>
  <div class="app">
    <!--3. 通过属性绑定的方式将数据传进来 -->
    <son :msg="msg" :info="userinfo.name"></son>
  </div>
</template>

<script>
import son from "./components/son.vue"
export default {
     
  components:{
     
    son
  },
  //1、在父组件中定义数据
  data(){
     
    return{
     
      msg: '父组件',
      userinfo:{
     name:'wzt',age:20}
    }
  }
}
</script>

<!-- 子组件 -->
<template>
  <div class="son">
	<!-- 4.将父组件的数据渲染到
### Vue2 中子组件更新父组件方式Vue.js 的设计哲学中,父子组件之间的通信遵循单向数据流的原则。这意味着父组件可以通过 `props` 向子组件数据,而子组件则不能直接修改这些 `props` [^1]。如果需要实现类似于双向绑定的效果,则通常采用以下方式: #### 使用 `$emit` 和事件监听器 当父组件希望接收来自子组件的状态变化时,可以利用 Vue 提供的自定义事件机制来完成这一需求。具体来说,在子组件内部调用 `$emit('event-name', payload)` 方法触发一个事件,并携带必要的参数作为负载;随后由父级通过 v-on 或 @ 符号捕获该特定名称的事件并作出响应。 ```javascript // 子组件示例 export default { props: ['value'], // 接收来自父亲的数据 methods: { updateValue(newValue) { this.$emit('input', newValue); // 发送新数给父母节点处理 } }, } ``` 对于上述代码片段中的 `updateValue()` 函数而言,它会发射名为 'input' 的事件并将新的输入发送回去让上层管理状态变更逻辑[^2]。 #### 实现伪双向绑定模式 (v-model 支持) 为了简化这种常见的场景——即允许某个属性既可读又能写—Vue 还引入了一个特殊的语法糖叫做 `.sync` 修饰符以及更通用的形式就是支持 `<component>` 上使用的标准 HTML 属性 `v-model` 。后者实际上背后也是基于前面提到过的 emit-input 模式工作的只是做了封装而已所以看起来更加简洁明了一些时候甚至都不需要用到额外的手动编写 glue code 就能达成目的了! ```html <!-- 父模板 --> <child-component v-model="parentData"></child-component> <script> new Vue({ data() { return { parentData: '' }; } }); </script> ``` 这里展示了如何借助于 vue 自带的功能快速建立起一套简单的双向同步关系无需太多复杂操作即可满足大部分日常开发所需功能[^3]。 #### 注意事项 尽管技术可行但从架构角度来看还是建议尽量保持清晰分离各自职责范围内的事情除非确实必要才考虑打破常规做法比如真正意义上的完全共享同一个 reference 类型变量之类的极端情况再另行讨论比较好一些因为这样有助于长期维护性和理解成本降低等方面考量因素综合作决定最终实施方案才是明智之举[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值