【Vue】刪除數組元素,導致剩余元素被重新渲染


最近在項目中有使用Vue,然而在開發過程中發現,當我對數組中的元素進行刪除時,會導致該元素后面的元素沒有被重新渲染。

html代碼如下:
有兩個組件:一個是Main組件,用來包含所有的內容容器;一個是子組件,用來顯示內容。
clipboard.png

js代碼如下:
clipboard.png

然后還有一個Vuex的store:

clipboard.png

正常來說,在刪除子容器時,應該可以直接使用vue中數組的重寫方法splice進行刪除。如:

state.Content.splice(i,1);

但是使用后發現,在刪除元素后,這個元素后面的元素會被重新加載,並且沒有被重新渲染,頁面中的vue邏輯沒有被正常執行。

嘗試過多種方式后還是沒有解決,感覺應該是當元素被刪除后,后面元素的下標發生變化,導致元素中的內容被重新加載,但又沒有被渲染。

因此我最終的解決方案是,如上圖中所示,不直接刪除元素,而是使用

state.Content.splice(i,1,null);

的方式將數組中的元素設置為空,但又不改變數組的排列方式,從而最終解決問題。
但是這種解決方式只能說治標不治本,並不能很好的解答我的疑問。


免責聲明!

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



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