详解Vue中子组件修改父组件传过来的值的三种方式

 更新时间:2024年12月12日 11:37:46   作者:陪你去流浪_  
这篇文章主要为大家详细介绍了Vue中子组件修改父组件传过来的值的三种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下

方式1:子组件发送emit,触发父组件修改

父组件

<template>
  <div>
    <son :count="count" @updateCount="updateCount" />
  </div>
</template>

<script>
import son from "./son";
export default {
  data() {
    return {
      count: 0,
    };
  },
  components: { son },
  methods: {
    updateCount(data) {
      this.count = data;
    },
  },
};
</script>

子组件

<template>
  <div class="goodsBasic">
    <div>父组件:{{ count }}</div>
    <el-button @click="changeCount">方式1</el-button>
  </div>
</template>
<script>
export default {
  props: {
    count: {
      type: Number,
      default: 0,
    },
  },
  methods: {
    changeCount() {
      this.$emit("updateCount", this.count + 1);
    },
  },
};
</script>

方式2:在子组件那里强制修改

父组件

<template>
  <div>
    <son :text.sync="text" />
  </div>
</template>

<script>
import son from "./son";
export default {
  data() {
    return {
      text: "hello world",
    };
  },
  components: { son },
};
</script>

子组件

<template>
  <div class="goodsBasic">
    <div>父组件:{{ text }}</div>
    <el-button @click="changeCount">方式2</el-button>
  </div>
</template>
<script>
export default {
  props: {
    text: {
      type: String,
      default: "",
    },
  },
  methods: {
    changeCount() {
      this.$emit("update:text", "我被强制修改了");
    },
  },
};
</script>

方式3:子组件定义一个值,来代替父组件传过来的值(不推荐,该方法父子组件的值不是同步修改)

父组件

<template>
  <div>
    <son :count="count" />
  </div>
</template>

<script>
import son from "./son";
export default {
  data() {
    return {
      count: 0,
    };
  },
  components: { son },
};
</script>

子组件

<template>
  <div class="goodsBasic">
    <div>子组件:{{ son_count }}</div>
    <el-button @click="changeCount">方式3</el-button>
  </div>
</template>
<script>
export default {
  props: {
    count: {
      type: Number,
      default: 0,
    },
  },
  data() {
    return {
      son_count: this.count,
    };
  },
  methods: {
    changeCount() {
      this.son_count++;
    },
  },
};
</script>

以上就是详解Vue中子组件修改父组件传过来的值的三种方式的详细内容,更多关于Vue子组件修改父组件传值的资料请关注脚本之家其它相关文章!

相关文章

  • Vue生态的新成员Pinia的详细介绍

    Vue生态的新成员Pinia的详细介绍

    本文主要介绍了Vue生态的新成员Pinia的详细介绍,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 基于Element封装一个表格组件tableList的使用方法

    基于Element封装一个表格组件tableList的使用方法

    这篇文章主要介绍了基于Element封装一个表格组件tableList的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • vue-cli3搭建项目的详细步骤

    vue-cli3搭建项目的详细步骤

    这篇文章主要介绍了vue-cli3搭建项目的详细步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Vue中自动生成路由配置文件覆盖路由配置的思路详解

    Vue中自动生成路由配置文件覆盖路由配置的思路详解

    这篇文章主要介绍了Vue中自动生成路由配置文件覆盖路由配置的思路详解,大概思路是读取@/views下所有index.vue如果当前文件下有包含相同路径则认为是它的子路由,需要的朋友可以参考下
    2024-05-05
  • VUE 更好的 ajax 上传处理 axios.js实现代码

    VUE 更好的 ajax 上传处理 axios.js实现代码

    本篇文章主要介绍了VUE 更好的 ajax 上传处理 axios.js实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Vue中textarea自适应高度方案的实现

    Vue中textarea自适应高度方案的实现

    本文主要介绍了Vue中textarea自适应高度方案的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Vue应用中504错误(Gateway timeout)的原因与解决方法

    Vue应用中504错误(Gateway timeout)的原因与解决方法

    在Vue前端应用中遇到504代理错误通常是由于请求在到达服务器之前超时,504错误表示网关超时,可能由后端服务响应慢、网络问题、代理配置错误、请求负载过大、前端请求超时设置不当、服务器资源不足或第三方服务问题引起
    2024-09-09
  • vue使用pdfjs显示PDF可复制的实现方法

    vue使用pdfjs显示PDF可复制的实现方法

    这篇文章主要介绍了vue使用pdfjs显示PDF可复制的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • 解决ele ui 表格表头太长问题的实现

    解决ele ui 表格表头太长问题的实现

    这篇文章主要介绍了解决ele ui 表格表头太长问题的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Vue iview-admin框架二级菜单改为三级菜单的方法

    Vue iview-admin框架二级菜单改为三级菜单的方法

    这篇文章主要介绍了Vue iview-admin框架二级菜单改为三级菜单的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07

最新评论