Vue中常见参数传递方式(父传子,子传父)

1、父传子(props)

<!-- 父组件father.vue -->
<template>
  <div>
    <div>这是父组件要传给子组件的参数:{{msg}}</div>
    <!-- 1.传递:data1为动态参数msg的参数名,名字自定义,与子组件接收参数名同名
    data2为静态参数的参数名,名字自定义,与子组件接收参数名同名 -->
    <child :data1="msg" data2="888"></child>
  </div>
</template>
<script>
  import child from "./child";
  export default {
      data() {
          return {
              msg:"666"
          }
      },
    components: {
      child
    }
  };
</script>
<!-- 子组件child.vue -->
<template>
  <div>
    <div>这里是child组件</div>
    <!-- 这里就是接收的父组件参数 -->
    <div>接受的父组件动态参数:{{ data1 }}</div>
    <div>接受的父组件静态参数:{{ data2 }}</div>
    <div>接受的父组件参数:{{ data }}</div>
  </div>
</template>
<script>
  export default {
    // 接收:props接收父组件参数,data1与data2为传递参数的参数名,与父组件内同名(方式选其一)
    // 方式1
    props: ["data1", "data2"],
    // 方式2
    props: {
        data1: {
            type: String,//数据类型
            default: '',//默认值
            require: true //require是否必传
        },
        data2: {
            type: String,//数据类型
            default: '',//默认值
            require: true //require是否必传
        }
    },
    data() {
      return {
        data: "1111"
      };
    },
    // 使用:直接用this调用
    mounted() {
      this.data = this.data1;
    }
  };
</script>

2、子传父($emit)

<!-- 子组件child.vue -->
<template>
  <div>
    <div>这里是child组件</div>
    <!-- 这里就是接收的父组件参数 -->
    <input type="button" value="点击向父组件传参" @click="toFather">
  </div>
</template>
<script>
  export default {
    data(){
      return{
        cmsg:'我是子组件的参数'
      }
    },
    methods: {
      toFather(){
        // 1.子组件触发父组件方法
        // $emit第一个参数为所要触发的父组件函数,函数名可自定义但要与父组件中对应函数名同名
        // $emit第二个参数就是子组件向父组件传递的参数
        this.$emit('receive',this.cmsg);
      }
    },
  };
</script>
<style scoped></style>
<!-- 父组件father.vue -->
<template>
  <div>
    <div>这里是father组件</div>
    <div>接收子组件参数:{{fmsg}}</div>
    <!-- 2.在对应子组件上绑定函数,这里“receive”是函数名,可自定义但要与子组件触发函数同名 -->
    <child @receive="fromChild"></child>
  </div>
</template>
<script>
  import child from "./child";
  export default {
    data() {
      return {
        fmsg:''
      };
    },
    methods: {
      // 接收子组件参数,赋值
      fromChild(data){
        this.fmsg=data;
      }
    },
    components: {
      child
    }
  };
</script>
<style scoped></style>

Vue,实现子组件调用父组件方法并传递参数的方法有多种。一种常见的方法是通过自定义事件来实现。首先,在子组件使用$emit方法触发自定义事件,并传递参数。然后,父组件在模板使用v-on指令监听该自定义事件,并在触发时调用相应的方法获取参数。 具体步骤如下: 1. 在子组件,通过$emit方法触发自定义事件,并传递参数。例如,可以在需要调用父组件方法的地方使用$emit('customEvent', parameter)来触发自定义事件并传递参数。 2. 在父组件,使用v-on指令监听该自定义事件,并在触发时调用相应的方法。例如,可以在父组件的模板使用v-on:customEvent="methodName"来监听名为customEvent的自定义事件,并在触发时调用methodName方法。 3. 在父组件的方法,通过参数接收子组件传递的值。例如,在methodName方法,可以使用参数来接收子组件传递的值。 下面是一个示例代码,展示了如何在Vue实现子组件调用父组件方法传递参数的过程: 父组件代码: ``` <template> <div> <child-component @customEvent="handleCustomEvent"></child-component> </div> </template> <script> import ChildComponent from 'path/to/ChildComponent.vue'; export default { components: { ChildComponent }, methods: { handleCustomEvent(parameter) { // 在这里处理子组件传递的参数 console.log(parameter); } } } </script> ``` 子组件代码: ``` <template> <div> <button @click="callParentMethod">调用父组件方法</button> </div> </template> <script> export default { methods: { callParentMethod() { // 通过$emit触发自定义事件,并传递参数 this.$emit('customEvent', '参数值'); } } } </script> ``` 在这个示例,当子组件的按钮被点击时,它会调用callParentMethod方法,然后通过$emit('customEvent', '参数值')触发自定义事件,并传递参数。父组件通过@customEvent="handleCustomEvent"监听自定义事件,并在触发时调用handleCustomEvent方法,接收子组件传递的参数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【vue2】子组件向父组件传参方法汇总](https://blog.csdn.net/weixin_44431073/article/details/125006029)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Vue - 父子组件互相传参、调用](https://blog.csdn.net/hutuyaoniexi/article/details/127651959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值