世界报道:vue sync出错怎么办

时间:2022-12-26 16:08:15       来源:PHP中文网

本教程操作环境: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名称 ” ,新值)
登录后复制

父组件

登录后复制

子组件

修改名字
登录后复制
登录后复制
methods:{changeName(newName){//修改父组件传过来的数据this.$emit("update:name", newName)}}
登录后复制
:name.sync修饰符其实是以下代码的缩写@update:name="val => name= val"
登录后复制

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

传递对象

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

父组件

名字:{{name}}

登录后复制
export default {data(){return{obj:{name: "张三"}}}}
登录后复制

子组件

修改名字
登录后复制
登录后复制
export default {props:{toChildObj:{type:Object,default:{}},},data(){return{}},methods:{changeName(newName){//修改父组件传过来的数据this.toChildObj.name = newName;}}}
登录后复制

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

以上就是vue sync出错怎么办的详细内容,更多请关注php中文网其它相关文章!

关键词: 相关文章 复杂数据类型