详解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子组件修改父组件传值的资料请关注脚本之家其它相关文章!