欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

簡(jiǎn)單類型的數(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個(gè)):push ,shift, unshift, pop, sort, splice, reverse

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

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

二、set方法(推薦)

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

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

修改最后一個(gè)為"4"

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

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

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

修改最后一個(gè)為"4"

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

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

vue中修改對(duì)象的方法

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

this.obj.dengxi = 'dengxi'?

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

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

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

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

關(guān)于刪除

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

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

this.obj.dengxi = null

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

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

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

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

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

this.obj = {....}

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

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

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

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

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

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

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

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

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

vm.name="xiaoming"

2、類型為對(duì)象

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

 3、類型為數(shù)組

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

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

1. 初始化時(shí)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')

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

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

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

錯(cuò)誤方式:

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ù)組

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

相關(guān)文章

  • Vue-cli中為單獨(dú)頁面設(shè)置背景色的實(shí)現(xiàn)方法

    Vue-cli中為單獨(dú)頁面設(shè)置背景色的實(shí)現(xiàn)方法

    下面小編就為大家分享一篇Vue-cli中為單獨(dú)頁面設(shè)置背景色的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • vue+iview的菜單與頁簽的聯(lián)動(dòng)方式

    vue+iview的菜單與頁簽的聯(lián)動(dòng)方式

    這篇文章主要介紹了vue+iview的菜單與頁簽的聯(lián)動(dòng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 說說如何在Vue.js中實(shí)現(xiàn)數(shù)字輸入組件的方法

    說說如何在Vue.js中實(shí)現(xiàn)數(shù)字輸入組件的方法

    這篇文章主要介紹了說說如何在Vue.js中實(shí)現(xiàn)數(shù)字輸入組件的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • 解決vue打包 npm run build-test突然不動(dòng)了的問題

    解決vue打包 npm run build-test突然不動(dòng)了的問題

    這篇文章主要介紹了解決vue打包 npm run build-test突然不動(dòng)了的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 基于Vue中使用節(jié)流Lodash throttle詳解

    基于Vue中使用節(jié)流Lodash throttle詳解

    今天小編就為大家分享一篇基于Vue中使用節(jié)流Lodash throttle詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • vue父組件值變化但子組件不刷新的三種解決方案

    vue父組件值變化但子組件不刷新的三種解決方案

    父組件傳遞給子組件的數(shù)據(jù),如果是一個(gè)復(fù)雜對(duì)象(例如一個(gè)數(shù)組或?qū)ο螅?那么子組件只會(huì)監(jiān)聽對(duì)象的引用而不是對(duì)象的內(nèi)容,這意味著當(dāng)對(duì)象的內(nèi)容發(fā)生變化時(shí),子組件不會(huì)更新,本文給大家介紹了vue子組件不刷新的三種解決方案,需要的朋友可以參考下
    2024-03-03
  • vue3中Fragment特性的一個(gè)bug需要注意事項(xiàng)

    vue3中Fragment特性的一個(gè)bug需要注意事項(xiàng)

    這篇文章主要介紹了vue3中Fragment特性的一個(gè)bug,需要留意的注意事項(xiàng)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • VUE實(shí)現(xiàn)移動(dòng)端列表篩選功能

    VUE實(shí)現(xiàn)移動(dòng)端列表篩選功能

    這篇文章主要介紹了VUE實(shí)現(xiàn)移動(dòng)端列表篩選功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Vue3?setup添加name的方法步驟

    Vue3?setup添加name的方法步驟

    如果你在 vue3 開發(fā)中使用了語法的話,對(duì)于組件的name屬性,需要做一番額外的處理,下面這篇文章主要給大家介紹了關(guān)于Vue3?setup添加name的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • vue貨幣過濾器的實(shí)現(xiàn)方法

    vue貨幣過濾器的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了vue貨幣過濾器的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04

最新評(píng)論