vue sync出錯怎麼辦

2022-12-26 18:00:47

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 sync出錯怎麼辦的詳細內容,更多請關注TW511.COM其它相關文章!