首页 >web前端 >前端问答 >vue sync出错怎么办

vue sync出错怎么办

藏色散人
藏色散人原创
2022-12-26 16:25:082509浏览

vue sync出错的解决办法:1、修改父组件传过来的数据,代码如“a6672a57f464d1160648da9aa7b5854cb8522385beb601be7cd27479a3f20ae7”;2、把需要传递的基本数据类型值放入对象中,代码如“0692aaa9557c4b08153d876ed6863651b8522385beb601be7cd27479a3f20ae7”。

vue sync出错怎么办

本教程操作环境:Windows10系统、Vue 3版、Dell G3电脑。

vue sync出错怎么办?

Vue修饰符.sync(Avoid mutating a prop directly since .......报错的一种解决方案)

前言

我们都知道,子组件在修改父组件传过来的props时会报错,如下图

一、什么是.sync

当我们跨父子组件想要修改数据时,需要父子组件通讯,父传子 :在子组件绑定数据然后子组件用props接收,而子传父,则是父组件需要在组件上绑定事件,子组件使用$emit传递事件;这样的数据修改写起来显得有些麻烦,.sync这个修饰符就是一个缩写以上子组件修改父组件数据的写法

二 .sync的使用

语法:

:props名称 . sync=“props值”
$emit( “ update:props名称 ” ,新值)

父组件

<child-dialog :name.sync="userName"></child-Dialog>

子组件

<el-button type="primary" @click="changeName(&#39;王五&#39;)">修改名字</el-button>
methods:{
changeName(newName){
//修改父组件传过来的数据
this.$emit(&#39;update:name&#39;, newName)
}
}
:name.sync修饰符其实是以下代码的缩写
@update:name="val => name= val"

三、其他 props双向邦定的方法

传递对象

把需要传递的基本数据类型值放入对象中,子组件中修改对象中的值就不会报错了,原理是对象是复杂数据类型,子组件接收到的对象和父组件传递的对象是共用一个内存地址的,故可实现双向邦定的效果。

父组件

<div>
<child-dialog :toChildObj="obj"></child-Dialog>
<p>
<span>名字:</span>{{name}}
</p>
</div>
export default {
data(){
return{
obj:{
name: "张三"
}
}
}
}

子组件

<el-button type="primary" @click="changeName(&#39;王五&#39;)">修改名字</el-button>
export default {
props:{
toChildObj:{
type:Object,
default:{}
},
},
data(){
return{}
},
methods:{
changeName(newName){
//修改父组件传过来的数据
this.toChildObj.name = newName;
}
}
}

推荐学习:《vue.js视频教程

以上是vue sync出错怎么办的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn