亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue中向data添加新屬性的三種方式小結(jié)

 更新時間:2022年04月20日 14:50:39   作者:a@do?it  
這篇文章主要介紹了vue中向data添加新屬性的三種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

向data添加新屬性的三種方式

原理分析

首先在了解這三種方式之前,我覺的有必要說一下,為啥不能直接手動給data中的對象添加屬性呢?

下面咱們一塊分析下:

vue2 是通過數(shù)據(jù)劫持 “Object.defineProperty” 實現(xiàn)數(shù)據(jù)響應式;

? ? const obj = {};
? ? ? ? let val = 'kk'
? ? ? ? Object.defineProperty(obj,'name',{
? ? ? ? ? ? get(){
? ? ? ? ? ? ? ? console.log('訪問了')
? ? ? ? ? ? ? ? return val
? ? ? ? ? ? ? ?
? ? ? ? ? ? },
? ? ? ? ? ? set(newval){
? ? ? ? ? ? ? ? if(newval !==val)
? ? ? ? ? ? ? ? val = newval;
? ? ? ? ? ? ? ? ?console.log('設置',newval)
? ? ? ? ? ? }
? ? ? ? })

在我們訪問或者設置obj.name的時候,會相繼出發(fā) setter,getter;然而在給obj添加屬性的時候,卻沒有觸發(fā)屬性攔截;

其實上邊的代碼是將obj對象的name屬性設置成了響應式數(shù)據(jù),但是新添加的屬性并沒有通過Object.defineProperty 設置成響應式,所有這就是為什么vue 的data中對象新加屬性頁面無法更新,但是數(shù)據(jù)上卻又我們新加屬性的原因。

三種方式

1.Vue.set()

Vue.set( target, propertyName/index, value ) 參數(shù)
  • {Object | Array} target
  • {string | number} propertyName/index
  • {any} value

返回值:設置的值

通過Vue.set向響應式對象中添加一個property,并確保這個新 property同樣是響應式的,且觸發(fā)視圖更新

data() {
? ? return {
? ? ? ? msg:{
? ? ? ? ? ? name:'黑澤明',
? ? ? ? ? ? hero:true
? ? ? ? } ? ?
? ? }
},
methods: {
? ? addProperty(){
? ? ? ? this.$set(this.msg, 'sex', '男')
? ? }
},

2.Object.assign()

直接使用Object.assign()添加到對象的新屬性不會觸發(fā)更新。

應創(chuàng)建一個新的對象,合并原對象和混入對象的屬性

? ? data() {
? ? ? ? return {
? ? ? ? ? ? msg:{
? ? ? ? ? ? ? ? name:'黑澤明',
? ? ? ? ? ? ? ? hero:true
? ? ? ? ? ? } ? ?
? ? ? ? }
? ? },
? ?addProperty(){
? ? ? ? ? ? this.msg = Object.assign({},this.msg,{sex:'name'});
? ? ? ? },

3.$forceUpdate

$forceUpdate迫使Vue 實例重新渲染

data() {
? ? return {
? ? ? ? msg:{
? ? ? ? ? ? name:'黑澤明',
? ? ? ? ? ? hero:true
? ? ? ? } ? ?
? ? }
},
addProperty(){
? ? ? ?this.msg.sex = '男';
? ? ? ?this.$forceUpdate()?
? ? },

小結(jié)一下吧:

  • 對象中添加少量的新屬性,可以直接采用Vue.set()
  • 對象中添加多個新屬性,則通過Object.assign()創(chuàng)建新對象
  • 如果你實在不知道怎么操作時,可采取$forceUpdate()進行強制刷新 (不建議)

vue組件 data等屬性介紹

注意:

1.組件中的data屬性的內(nèi)容,必須是一個function類型,并且必須要有返回值。用法跟實例中的data使用是一樣的,同時也有實例化對象的其他屬性如,methods

2.因為如果,不是這里面的對象,而是一個公共的對象實例,可能會出現(xiàn)錯誤。不同的組件如果改變了公共的對象然后返回,對其他組件有影響

HTML代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../lib/vue.js"></script>
</head>
<body>
     <div id="app">
         <my-com></my-com>
     </div>
     
     <script>
         Vue.component('myCom',{
             template:'<h3>陳小帥是真的帥呢 +++ {{ msg }}</h3>',
             data:function () {
                 return{
                     msg:'組件中的data內(nèi)容'
                 }
             }
         });
         //組件中的data屬性的內(nèi)容,必須是一個function類型,并且必須要有返回值。用法跟實例中的data使用是一樣的,同時也有實例化對象的其他屬性如,methods
         //因為如果,不是這里面的對象,而是一個公共的對象實例,可能會出現(xiàn)錯誤。不同的組件如果改變了公共的對象然后返回,對其他組件有影響
         
         var vm = new Vue({
            el:'#app',
            data:{} 
         });
     </script>
</body>
</html>

效果:

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 詳解Vue如何手寫虛擬dom并進行渲染

    詳解Vue如何手寫虛擬dom并進行渲染

    這篇文章主要為大家詳細介紹了渲染器的工作原理,以及如何將真實dom或者組件用虛擬dom的形式進行描述并渲染,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • vue獲取當前路由的五種方式示例代碼

    vue獲取當前路由的五種方式示例代碼

    這篇文章主要給大家介紹了關于vue獲取當前路由的五種方式,文中通過代碼示例介紹的非常詳細,對大家學習或者使用vue具有一定的參考學習價值,需要的朋友可以參考下
    2023-08-08
  • Vue封裝遠程下拉框組件的實現(xiàn)示例

    Vue封裝遠程下拉框組件的實現(xiàn)示例

    本文主要介紹了Vue封裝遠程下拉框組件的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • vue css 引入asstes中的圖片無法顯示的四種解決方法

    vue css 引入asstes中的圖片無法顯示的四種解決方法

    這篇文章主要介紹了vue css 引入asstes中的圖片 無法顯示的幾種解決方案,本文給出了四種解決方法,每種方法給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • vue源碼解析之事件機制原理

    vue源碼解析之事件機制原理

    這篇文章主要介紹了vue源碼解析之事件機制原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 解決vue-cli + webpack 新建項目出錯的問題

    解決vue-cli + webpack 新建項目出錯的問題

    下面小編就為大家分享一篇解決vue-cli + webpack 新建項目出錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 如何利用vue實現(xiàn)css過渡和動畫

    如何利用vue實現(xiàn)css過渡和動畫

    過渡Vue在插入、更新或者移除 DOM 時,提供多種不同方式的應用過渡效果這篇文章主要給大家介紹了關于如何利用vue實現(xiàn)css過渡和動畫的相關資料,需要的朋友可以參考下
    2021-11-11
  • vue中對象的賦值Object.assign({}, row)方式

    vue中對象的賦值Object.assign({}, row)方式

    這篇文章主要介紹了vue中對象的賦值Object.assign({}, row)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue中的虛擬dom知識點總結(jié)

    vue中的虛擬dom知識點總結(jié)

    這篇文章主要介紹了vue中的虛擬dom知識點總結(jié),文章圍繞主題內(nèi)容展開詳細介紹,需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-04-04
  • vuex state中的數(shù)組變化監(jiān)聽實例

    vuex state中的數(shù)組變化監(jiān)聽實例

    今天小編就為大家分享一篇vuex state中的數(shù)組變化監(jiān)聽實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11

最新評論