vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue子组件修改父组件传值

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

作者:陪你去流浪_

这篇文章主要为大家详细介绍了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子组件修改父组件传值的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文