国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

在vue中對數(shù)組值變化的監(jiān)聽與重新響應渲染操作

瀏覽:3日期:2023-01-06 14:54:04

在我們項目開發(fā)過程中,實例中的數(shù)據(jù)類型可以是對象、數(shù)組等。在對象中,某個屬性值發(fā)生更改時,我們可以通過對象的深度監(jiān)聽,以達到重新渲染頁面的需求。或者查閱這篇文章

例如:

<script> export default { data(){ return { objVal: { name: ’obj’, type: ’obj’ } } }, watch:{ objVal:{ handler(val,oldval){ }, deep: true, } }, methods:{ changeObj(){ this.objVal.name = ’newobj’; } } }</script>

但是,在使用同一種方式進行數(shù)組值更改監(jiān)聽時,這種做法是無效的。

<script>export default { data() { return { arrList: [1,2,3,4,5] }; }, watch: { arrList: { handler(val, oldval) { }, deep: true } }, methods: { changeArr() { // 無效 this.arrList[0] = 10; } }};</script>

上述用以監(jiān)聽數(shù)組值變化的方法是無效的,vue是不會響應數(shù)據(jù)變化而重新去渲染頁面。在vue中僅需要通過修改賦值語句的方式,即可讓vue響應數(shù)組數(shù)據(jù)的變化。具體操作如下:

使用方法:

// Vue.setVue.set(vm.items, indexOfItem, newValue)// Array.prototype.splicevm.items.splice(indexOfItem, 1, newValue)

具體使用案例:

<script>export default { data() { return { arrList: [1,2,3,4,5] }; }, methods: { changeArr() { // this.arrList[0] = 10; // 修改為: this.arrList.splice(0, 1, 10); } }};</script>

或:

<script>export default { data() { return { arrList: [1,2,3,4,5] }; }, methods: { changeArr() { // this.arrList[0] = 10; // 修改為: this.$set(this.arrList, 0, 10); } }};</script>

以上兩種方式,均可達到監(jiān)聽數(shù)組值變化的效果。

補充知識:vue數(shù)組操作不觸發(fā)前端重新渲染

暫時使用給數(shù)組先賦值 [ ] ,然后重新賦值的方式解決。

此外,能夠監(jiān)聽的數(shù)組變異方法

https://cn.vuejs.org/v2/guide/list.html#%E5%8F%98%E5%BC%82%E6%96%B9%E6%B3%95

還有就是set

標簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 正定县| 大关县| 交城县| 永川市| 赣榆县| 达拉特旗| 旅游| 藁城市| 军事| 双峰县| 上虞市| 台州市| 长葛市| 永寿县| 商都县| 乌苏市| 南丹县| 萝北县| 丰都县| 西乡县| 法库县| 营山县| 阜平县| SHOW| 阜平县| 台江县| 大安市| 枞阳县| 青岛市| 平邑县| 观塘区| 顺平县| 汝阳县| 海门市| 海原县| 宝清县| 广德县| 鲁山县| 全南县| 保山市| 桂平市|