Vue传值(3种常用传值方法)

本文详细介绍了Vue中三种常用的组件间通信方式:父组件向子组件传值,子组件向父组件传值,以及非父子组件间的通信。通过属性绑定实现父传子,通过事件触发实现子传父,对于非父子组件,利用公共的bus.js文件作为中介进行通信。
摘要由CSDN通过智能技术生成

Vue传值(3种常用传值方法)

  • 父组件传值给子组件,首先父组件发送的形式是用bind(用缩写:)绑定值到子组件身上。然后子组件用属性props接收。
  • 子组件传值父组件,首先是子组件发送的形式是this.$emit(事件名,需要发送的值),事件名:父组件on监听的方法,父组件第一件事就是监听子组件发送过来的事件名,@事件名=获取值的方法。获取值的方法(值)*,就这样拿到了儿子发过来的值
  • 兄弟传值,两个都要引入公共js->bus。首先是发送者,this.$emit(名字,值)。然后是接受者,this.$on(“传过来的那个名字”,函数(值)),这里要注意的是接受者的这个监听事件应该是放在钩子mounted事件内。同时注意this指向问题。(可用封装方法)
父组件向子组件进行传值:
父组件:
        <template>
      <div>
        父组件:
        <input type="text" v-model="name">
        <br>
        <br>
        <!-- 引入子组件 -->
        <child :inputName="name"&g
Vue 中传递 JSON 数据可以通过 props 属性或事件进行。以下是两常用方法: 1. 使用 props 属性传递 JSON 数据: 在父组件中,可以通过 props 将 JSON 数据传递给子组件。首先,在父组件中定义一个属性,并将 JSON 数据作为值传递给该属性。然后,在子组件中使用 props 来接收并使用这些数据。 父组件中的示例代码: ``` <template> <div> <child-component :jsonData="myJsonData"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { myJsonData: { name: 'John', age: 25 } }; } }; </script> ``` 子组件的示例代码(ChildComponent.vue): ``` <template> <div> <p>Name: {{ jsonData.name }}</p> <p>Age: {{ jsonData.age }}</p> </div> </template> <script> export default { props: { jsonData: { type: Object, required: true } } }; </script> ``` 2. 使用事件(event)传递 JSON 数据: 在父组件中,可以使用 $emit 方法触发一个自定义事件,并附带 JSON 数据作为参数。然后,在子组件中使用 $on 来监听该事件,并处理接收到的数据。 父组件中的示例代码: ``` <template> <div> <button @click="sendJsonData">Send JSON Data</button> <child-component @json-data-received="handleJsonData"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, methods: { sendJsonData() { const jsonData = { name: 'John', age: 25 }; this.$emit('json-data-received', jsonData); }, handleJsonData(jsonData) { console.log(jsonData); } } }; </script> ``` 子组件的示例代码(ChildComponent.vue): ``` <template> <div></div> </template> <script> export default { mounted() { this.$parent.$on('json-data-received', this.handleJsonData); }, beforeUnmount() { this.$parent.$off('json-data-received', this.handleJsonData); }, methods: { handleJsonData(jsonData) { console.log(jsonData); // 处理接收到的 JSON 数据 } } }; </script> ``` 这两方法可以根据你的需求选择适合的方式来传递和处理 JSON 数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值