最近在項目中有使用Vue,然而在開發過程中發現,當我對數組中的元素進行刪除時,會導致該元素后面的元素沒有被重新渲染。
html代碼如下:
有兩個組件:一個是Main組件,用來包含所有的內容容器;一個是子組件,用來顯示內容。
js代碼如下:
然后還有一個Vuex的store:

正常來說,在刪除子容器時,應該可以直接使用vue中數組的重寫方法splice進行刪除。如:
state.Content.splice(i,1);
但是使用后發現,在刪除元素后,這個元素后面的元素會被重新加載,並且沒有被重新渲染,頁面中的vue邏輯沒有被正常執行。
嘗試過多種方式后還是沒有解決,感覺應該是當元素被刪除后,后面元素的下標發生變化,導致元素中的內容被重新加載,但又沒有被渲染。
因此我最終的解決方案是,如上圖中所示,不直接刪除元素,而是使用
state.Content.splice(i,1,null);
的方式將數組中的元素設置為空,但又不改變數組的排列方式,從而最終解決問題。
但是這種解決方式只能說治標不治本,並不能很好的解答我的疑問。
