Vue 修改成功之后我做了什么


Vue 修改成功之后我做了什么

背景:前端將修改的數據傳遞到后端,后端返回成功之后,我們要將數據及時顯示出來。
霸道方法一:重新請求接口
柔和方法二:修改成功之后的數據傳遞到源數據中,進行雙向綁定顯示。

我是怎么做的

有想過用霸道方法,剩下的時間就是自己的啦。哈哈。
但是今天我在這里進行了讓步,明天我就會其他的事情上做出讓步(20歲的小伙子摸什么🐟魚咯,摸魚🐟都是富人做的事情),所以還是要迎難而上。


我的需求: 我需要對列表中的某一行進行修改,然后將修改且成功的數據重新放入列表中。
我的想法: 我們知道Vue可以進行雙向綁定,雙向綁定又是基於存放在堆中數據引用控制的,所以我們可以在點擊修改的時候把源數據保存起來(將源數據引用保存起來)

保存源數據引用

data: function () {
        return {
            updateData: {
            // 需要修改的數據
                id: 0,
                meanings: [],
             
                // 為了修改不重新請求數據直接保存數據源
                baseData: []
            }
     }
 }

我們先創建存放數據源的對象,然后只需要在點擊修改的是時候將數據源引用傳入baseDate對象中就可以了。

  • 首先我們當然是將修改對象進行賦值
  • 然后將源數據存入baseData
  • 使用不保存數據源的引用傳入this.updateData.meanings進行修改操作(這里一定要使用不保存數據源引用的方式賦值,不然你修改this.updateData.meanings也會到源數據進行直接修改,還沒有修改成功,就已經將列表數據修改掉了。)

反向修改源數據

當后端返回修改成功之后我們就需要將修改之后的數據,反向到源數據中。這個時候我們之前創建的baseData對象就起作用啦。因為baseData就是源數據。

  • 因為我的業務需求,我保存的是一個數組,所以我需要將baseData源數據的長度修改為我修改后數據的長度。(主要是給各位小伙伴安排位置坐下來,看我獻丑)
  • 然后就是在不改變源數據數據引用的前提下面進行修改數據。(這里我用到了Vue.set方法,因為自己再去使用遍歷拿到this.updateData.meanings[i] 對象中數據的值,然后進行一一賦值,代碼太多了,既然有寫好的api所以我就直接使用了。Vue.set方法原理應該也是一樣的,感興趣的小伙伴可以自己研究一下。)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM