最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue如何修改data中數(shù)據(jù)問題

 更新時間:2022年09月07日 14:13:42   作者:可缺不可濫  
這篇文章主要介紹了vue如何修改data中數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue修改data中數(shù)據(jù)

vue的data中保存一些數(shù)據(jù),用于頁面的渲染。有的時候,當(dāng)我們手動對data中的數(shù)據(jù)修改時,vue卻監(jiān)聽不到這些數(shù)據(jù)的變化,導(dǎo)致頁面沒有觸發(fā)新一輪的更新。

注意:出現(xiàn)以上問題的原因在于,沒有通過vue提供的方法對保存在data中的數(shù)據(jù)進(jìn)行修改。強(qiáng)制性通過js對數(shù)據(jù)修改的那些方法,有一部分在vue中是不被認(rèn)可的。

vue中修改簡單類型數(shù)據(jù)

簡單類型的數(shù)據(jù),包括number boolean bigInt string 等

修改這類型的數(shù)據(jù),我們可以直接賦值,vue也能監(jiān)聽到數(shù)據(jù)發(fā)生的變化,然后作出修改。

xxxx表示變量名,yyyy則是要賦值的新值。

this.$data.xxxx = yyyy
或
this.xxxx = yyyy

vue中修改數(shù)組的方法

一、變異方法(7個):push ,shift, unshift, pop, sort, splice, reverse

這些方法在與js基本一致(推薦)

  • push:此方法是在數(shù)組的后面添加新加元素,此方法改變了數(shù)組的長度
  • pop:此方法在數(shù)組后面刪除最后一個元素,并返回數(shù)組,此方法改變了數(shù)組的長度
  • shift:此方法在數(shù)組后面刪除第一個元素,并返回數(shù)組,此方法改變了數(shù)組的長度
  • unshift:此方法是將一個或多個元素添加到數(shù)組的開頭,并返回新數(shù)組的長度
  • splice:Array.splice(開始位置, 刪除的個數(shù),替換的元素) 萬能方法,可以實現(xiàn)增刪改
  • sort:該方法用于對數(shù)組進(jìn)行排序
  • reverse:該方法用于將數(shù)組的內(nèi)容倒置

二、set方法(推薦)

this.set 這是 vue 實例調(diào)用 set 這是vue實例調(diào)用set這是vue實例調(diào)用set()方法,專門用來修改數(shù)組的

  • 第一個參數(shù),已經(jīng)存在data中的數(shù)據(jù),要被修改的數(shù)組
  • 第二個參數(shù),要修改的數(shù)組下標(biāo)
  • 第三個參數(shù),要修改的數(shù)組對應(yīng)下標(biāo)的值
this.$set (this.selectedarr, index, option)
data() {
?? ?return {
?? ??? ?textArray: ["1","2","3"]
?? ?}
}

修改最后一個為"4"

this.$set (this.textArray, 2, "4")

三、用一個全新的數(shù)組替換原先的數(shù)組,而不是在原先數(shù)組上修改(不推薦)

data() {
?? ?return {
?? ??? ?textArray: ["1","2","3"]
?? ?}
}

修改最后一個為"4"

this.textArray = ["1","2","4"]

簡單總結(jié)一下,這三種修改數(shù)組的方法,最后一種不推薦,因為這會引起vue中整個數(shù)組數(shù)據(jù)對應(yīng)的頁面重新渲染,而我們明明只想改變數(shù)組中的某一個元素。

vue中修改對象的方法

一、方法直接改(如果對象數(shù)據(jù)過于復(fù)雜,層次很深的話,不推薦)

this.obj.dengxi = 'dengxi'?

二、使用vue的實例提供的方法進(jìn)行操作(推薦,vue監(jiān)聽了這個方法,做到更好的更新渲染)

this.$set(vm.obj,'dengxi','dengxi好帥')

三、通過vue構(gòu)造函數(shù)提供的方法來改變(推薦,這個其實和第二種方法一樣)

Vue.set(this.obj,'dengxi','dengxi真的好帥')

關(guān)于刪除

如果想要將對象中的某一個鍵值對應(yīng)的value刪掉

一、可以通過上面的三種方法,將其設(shè)置為空(推薦,粗暴簡單,但有效)

this.obj.dengxi = null

二、vue實例提供的刪除方法(推薦)

this.$delete(this.obj,'yangxi')

三、vue構(gòu)造函數(shù)提供的方法(其實和第二種一樣,推薦)

Vue.delete(this.obj,'dengxi')

四、創(chuàng)建一個新對象,覆蓋之前的對象,vue仍能實現(xiàn)更新(不推薦)

this.obj = {....}

vue修改數(shù)據(jù)不生效,頁面不刷新

vue中數(shù)據(jù)類型

包括:基本類型,對象,數(shù)組

vue數(shù)據(jù)偵聽簡易理解

在vue2中,是通過Object.definedPropety()來進(jìn)行數(shù)據(jù)代理。

我們配置在const vm = new Vue({})中的deta會變成 vm自身上的屬性,也會存在于vm._data中,此時data中對應(yīng)的每一個屬性都會有g(shù)etter和setter,數(shù)據(jù)改變后模板重新解析,就依賴于setter對數(shù)據(jù)的偵聽。

從上圖黑色部分可以看到,age是對象,hobbies是字符串?dāng)?shù)組,friends是對象數(shù)組,他們本身都有g(shù)etter和setter來實現(xiàn)響應(yīng)式。

1、類型為基本數(shù)據(jù)類型:

此時,該屬性在vm上有直接的getter和setter,可以直接修改

vm.name="xiaoming"

2、類型為對象

 此時對象的每個屬性都有對應(yīng)個getter和setter,也可以實現(xiàn)響應(yīng)式

 3、類型為數(shù)組

 在js中,想要操作數(shù)組中的某個元素,我們可能會通過索引來操作,然而,從截圖中,我們發(fā)現(xiàn)沒有對應(yīng)元素索引值的getter和setter方法,因此我們再通過數(shù)組索引值修改數(shù)據(jù),就不會觸發(fā)模板解析,從而就不會刷新頁面。

數(shù)據(jù)更新后,頁面不刷新的可能原因

1. 初始化時data中不存在該屬性

通過 vm.xxx=yyy / vm.xxx.yyy="abc"方式添加,該屬性為非響應(yīng)式。想要添加響應(yīng)式數(shù)據(jù),需要借助vue提供的set方法:

Vue.set(vm.xxx, 'yyy', 'zzz')? 

或者 

vm.$set(vm.xxx, 'yyy', 'zzz')

也可以在初始化時的data數(shù)據(jù)中添加目標(biāo)屬性

注意:data中是不可直接用Vue.set()方式添加屬性的 即 Vue.set(vm, 'yyy', 'zzz')  或者  vm.$set(vm, 'yyy', 'zzz')是不合法的,控制臺會報錯,我們只能往已存在的屬性中增加屬性。

2. 通過索引值修改數(shù)組元素

錯誤方式:

vm.hobbies[0]='上班'
vm.friends[0]={name:'henmeimei',age=”19”}

正確修改方式:

通過數(shù)組的pop(末尾刪除)/push(末尾添加)/shift(開頭刪除)/unshift(開頭添加)/reverse(反轉(zhuǎn))/sort(排序)/splice(起始位置,刪除數(shù)量,插入元素)方法操作

Vue.set(vm.items, indexOfItem, newValue) ?? ?
vm.$set(vm.items, indexOfItem, newValue)

通過其他方式(filter/map/...)修改數(shù)組,并重新賦值給原數(shù)組

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

相關(guān)文章

  • 基于Vue.js實現(xiàn)簡單搜索框

    基于Vue.js實現(xiàn)簡單搜索框

    這篇文章主要為大家詳細(xì)介紹了基于Vue.js實現(xiàn)簡單搜索框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Vue學(xué)習(xí)之常用指令實例詳解

    Vue學(xué)習(xí)之常用指令實例詳解

    這篇文章主要介紹了Vue學(xué)習(xí)之常用指令,結(jié)合實例形式詳細(xì)分析了vue.js創(chuàng)建實例、常用指令及相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • 基于vite2+Vue3編寫一個在線幫助文檔工具

    基于vite2+Vue3編寫一個在線幫助文檔工具

    提起幫助文檔,想必大家都會想到?VuePress等。但是VuePress是“靜態(tài)網(wǎng)站生成器”,需要我們自行編寫文檔,然后交給VuePress變成網(wǎng)站。因此,本文將用vite2+Vue3編寫一個在線幫助文檔工具,需要的可以參考一下
    2022-03-03
  • Vue性能優(yōu)化的方法

    Vue性能優(yōu)化的方法

    這篇文章主要介紹了Vue性能優(yōu)化的方法,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)vue,感興趣的朋友可以了解下
    2020-07-07
  • Element Plus實現(xiàn)Affix 固釘

    Element Plus實現(xiàn)Affix 固釘

    本文主要介紹了Element Plus實現(xiàn)Affix 固釘,Affix組件用于將頁面元素固定在特定可視區(qū)域,文中通過示例代碼介紹的非常詳細(xì),感興趣的小伙伴們可以參考一下
    2021-07-07
  • 前端項目中如何使用百度地圖api(含實例)

    前端項目中如何使用百度地圖api(含實例)

    當(dāng)我們遇到定位展示的時候會出現(xiàn)使用地圖展示的需求,下面這篇文章主要給大家介紹了關(guān)于前端項目中如何使用百度地圖api(含實例)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • vue3頁面query參數(shù)變化并重新加載頁面數(shù)據(jù)方式

    vue3頁面query參數(shù)變化并重新加載頁面數(shù)據(jù)方式

    在Web開發(fā)中,頁面間的跳轉(zhuǎn)及數(shù)據(jù)刷新是常見問題,通過使用$router.push和$router.replace方法,可以控制頁面跳轉(zhuǎn)的行為,具體操作時,若發(fā)現(xiàn)頁面ID變更后數(shù)據(jù)未刷新,可通過給router-view標(biāo)簽添加key值解決,若使用keep-alive
    2024-10-10
  • Vue基本指令實例圖文講解

    Vue基本指令實例圖文講解

    這篇文章主要介紹了Vue基本指令實例圖文講解,文章將基本指令講解的很清楚,有對于指令不太懂的同學(xué)可以跟著學(xué)習(xí)研究下
    2021-02-02
  • vue實現(xiàn)消息向上無縫滾動效果

    vue實現(xiàn)消息向上無縫滾動效果

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)消息向上無縫滾動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 使用Vue和ECharts創(chuàng)建交互式圖表的代碼示例

    使用Vue和ECharts創(chuàng)建交互式圖表的代碼示例

    在現(xiàn)代 Web 應(yīng)用中,數(shù)據(jù)可視化是一個重要的組成部分,它不僅能夠幫助用戶更好地理解復(fù)雜的數(shù)據(jù),還能提升用戶體驗,本文給大家使用Vue和ECharts創(chuàng)建交互式圖表的示例,需要的朋友可以參考下
    2024-11-11

最新評論

阜新| 东源县| 蒙山县| 麦盖提县| 阿拉善左旗| 泰宁县| 荆州市| 商洛市| 合山市| 泰宁县| 阜平县| 贡觉县| 吴堡县| 壶关县| 玉树县| 武强县| 永春县| 红安县| 垦利县| 内江市| 紫云| 孟津县| 南和县| 长岭县| 陆河县| 西藏| 怀仁县| 嘉定区| 来凤县| 浦江县| 准格尔旗| 苏尼特右旗| 仙桃市| 临猗县| 尉犁县| 班戈县| 庆云县| 聂荣县| 绥芬河市| 竹北市| 琼中|