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

vue3 數組清空與重新賦值的操作代碼

 更新時間:2023年09月18日 10:36:09   作者:開源字節(jié)  
這篇文章主要介紹了vue3 數組清空與重新賦值的操作代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

vue3 數組清空與重新賦值

vue3里面,如果數組是用reactive()聲明的,要清空數組得用list.length = 0,如果想要使用list =[],或者直接賦值類型list = [1,2,3,4,5],得把數組用ref([])來聲明,然后用list.value = []來修改,然后如果是對象里面的數組,可以直接使用obj.list = []來清空,因為obj已經被響應式了.

<template>
  <div>
    {{list}}
    <button @click="add">增加</button>
    <button @click="clearAll">清空</button>
    {{newList}}
  </div>
</template>
<script>
import { ref, watch, toRefs,computed,reactive,onBeforeUpdate,onUpdated,onBeforeMount,onMounted,onBeforeUnmount,onUnmounted ,onRenderTracked,onRenderTriggered  } from 'vue'
export default {
  name: '',
  components: {
  },
  setup(){
    let list = ref([])
    function add(){
      list.value.push(123)
      state.newList.push(123)
    }
    let state = reactive({
      newList:[]
    })
    function clearAll(){
      list.value = [1,2,3,4,5]
      // list.length = 0
      state.newList = []
      console.log(list)
    } 
    return {
      list,
      add,
      clearAll,
      ...toRefs(state)
    }
  },
}
</script>

清空數組的幾個方式介紹

1. 前言

前兩天在工作當中遇到一個問題,在 vue3 中使用 reactive 生成的響應式數組如何清空,當然我一般清空都是這么寫:

  let array = [1,2,3];
  array = [];

不過這么用在 reactive 代理的方式中還是有點問題,比如這樣:

    let array = reactive([1,2,3]);
    watch(()=>[...array],()=>{
      console.log(array);
    },)
    array = reactive([]);

很顯然,因為丟失了對原來 響應式 對象的引用,這樣就直接失去了 監(jiān)聽 。

2. 清空數據的幾種方式

2.1 使用ref()

使用 ref ,這是最簡便的方法:

    const array = ref([1,2,3]);
    watch(array,()=>{
      console.log(array.value);
    },)
    array.value = [];

2.2 使用slice

slice 顧名思義,就是對數組進行 切片 ,然后返回一個新 數組 ,感覺和 go 語言的 切片 有點類似。當然用過 react 的小伙伴應該經常用 slice ,清空一個數組只需要這樣寫:

    const array = ref([1,2,3]);
    watch(array,()=>{
      console.log(array.value);
    },)
    array.value = array.value.slice(0,0);

不過需要注意要使用 ref 。

2.3 length賦值為0

個人比較喜歡這種,直接將 length 賦值為 0

    const array = ref([1,2,3]);
    watch(array,()=>{
      console.log(array.value);
    },{
      deep:true
    })
   array.value.length = 0;

而且,這種只會觸發(fā)一次,但是需要注意 watch 要開啟 deep :

有的語言可能不支持。

不過,這種方式,使用 reactive 會更加方便,也不用開啟 deep :

    const array = reactive([1,2,3]);
    watch(()=>[...array],()=>{
      console.log(array);
    })
    array.length = 0;

2.4 使用splice

副作用 函數 splice 也是一種方案,這種情況同時也可以使用 reactive :

    const array = reactive([1,2,3]);
    watch(()=>[...array],()=>{
      console.log(array);
    },)
    array.splice(0,array.length)

不過要注意, watch 會觸發(fā)多次:

當然也可以使用 ref ,但是注意這種情況下,需要開啟 deep :

    const array = ref([1,2,3]);
    watch(array,()=>{
      console.log(array.value);
    },{
      deep:true
    })
    array.value.splice(0,array.value.length)

但是可以看到 ref 也和 reactive 一樣,會觸發(fā)多次。

3. 總結

以上是我個人 工作中 的對于 清空數組 的總結,但是可以看到 splice 還是有點特殊的,會觸發(fā)多次,不過為什么會產生這種差異還有待研究。

到此這篇關于vue3 數組清空與重新賦值的文章就介紹到這了,更多相關vue 數組清空與重新賦值內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue中如何實現錨點定位平滑滾動

    vue中如何實現錨點定位平滑滾動

    這篇文章主要介紹了vue中如何實現錨點定位平滑滾動方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue 實現滾動到底部翻頁效果(pc端)

    vue 實現滾動到底部翻頁效果(pc端)

    這篇文章主要介紹了pc端vue 滾動到底部翻頁效果,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • vue3使用html2canvas實現網頁截圖并下載功能的全過程

    vue3使用html2canvas實現網頁截圖并下載功能的全過程

    html2canvas是一個JavaScript庫,用于將HTML元素轉換為Canvas圖像,保留CSS樣式和布局,支持多種瀏覽器和圖片格式,在Vue等項目中應用廣泛,盡管有跨域、模糊等問題,通過配置優(yōu)化可有效解決
    2025-10-10
  • vue?的全選組件封裝你知道多少

    vue?的全選組件封裝你知道多少

    這篇文章主要為大家詳細介紹了vue的全選組件封裝,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 深入淺析Vue中的Prop

    深入淺析Vue中的Prop

    Prop的基本用法很簡單,只需要在子組件的Vue實例中定義該屬性并把值設為目標屬性的數組即可。這篇文章主要介紹了Vue中的Prop ,需要的朋友可以參考下
    2018-06-06
  • elementUI table表格動態(tài)合并的示例代碼

    elementUI table表格動態(tài)合并的示例代碼

    這篇文章主要介紹了elementUI table表格動態(tài)合并的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • vue+echarts圖表使用的問題記錄

    vue+echarts圖表使用的問題記錄

    由于在項目中需要對數據進行可視化處理,也就是用圖表展示,眾所周知echarts是非常強大的插件,所以這篇文章主要給大家介紹了關于vue+echarts圖表使用的相關資料,需要的朋友可以參考下
    2021-09-09
  • 解決vue.js this.$router.push無效的問題

    解決vue.js this.$router.push無效的問題

    今天小編就為大家分享一篇解決vue.js this.$router.push無效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • Vue?中v-model的完整用法及原理

    Vue?中v-model的完整用法及原理

    本文主要介紹了Vue?中v-model的完整用法及原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • v-slot和slot、slot-scope之間相互替換實例

    v-slot和slot、slot-scope之間相互替換實例

    這篇文章主要介紹了v-slot和slot、slot-scope之間相互替換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09

最新評論

霸州市| 农安县| 华阴市| 阿拉善右旗| 华坪县| 东平县| 阜平县| 门头沟区| 赤水市| 响水县| 翁牛特旗| 卓资县| 丽水市| 云梦县| 乐东| 托里县| 全椒县| 荥经县| 申扎县| 伊川县| 湟中县| 顺昌县| 泸州市| 宁远县| 泸定县| 微山县| 建湖县| 商南县| 邵阳县| 西乌| 安岳县| 广宁县| 同仁县| 千阳县| 方城县| 西青区| 南平市| 两当县| 台湾省| 阳山县| 乌海市|