• 技术文章 >web前端 >前端问答

    vue sync出错怎么办

    藏色散人藏色散人2022-12-26 16:25:08原创71

    vue sync出错的解决办法:1、修改父组件传过来的数据,代码如“<child-dialog :name.sync="userName"></child-Dialog>”;2、把需要传递的基本数据类型值放入对象中,代码如“<child-dialog :toChildObj="obj"></child-Dialog>”。

    本教程操作环境: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('王五')">修改名字</el-button>
    methods:{
    changeName(newName){
    //修改父组件传过来的数据
    this.$emit('update:name', 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('王五')">修改名字</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核实处理。
    专题推荐:.sync Vue
    上一篇:vue3无法安装vuex怎么办 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Vue3这样写列表页,让性能更好更高效!• vue的交错过渡怎么实现• vue 怎么隐藏内容• vue3无法安装vuex怎么办
    1/1

    PHP中文网