使用vue的同學(xué)大家都知道,在使用v-for指令的時候,都需要添加一個key屬性,并且是唯一的key。我們都會想到為什么要使用key呢?下面就針對這一問題做一個解釋。請看下面的例子:

在上面的例子中,我們用v-for循環(huán)了一個列表,然后有一個刪除功能。現(xiàn)在當(dāng)我們選中第一個多選框之后并刪除。我們會發(fā)現(xiàn),第一條數(shù)據(jù)確實是刪除了,但是為什么剩下兩條數(shù)據(jù)的第一條的多選框為什么還是處于選中狀態(tài)呢?那么我們?yōu)榱私鉀Q這個問題,我們的key就應(yīng)該使用id作為唯一的key.
這是因為我們雖然綁定了一個key,但是我們這個key不是唯一的。大概就是,最初的分別是0、1、2,當(dāng)我們選中第一個并刪除的時候,他的key就會變成0、1。在列表重新渲染的時候,會有一個就地復(fù)用策略;列表數(shù)據(jù)修改的時候,他會根據(jù)key值去判斷某個值是否修改,如果修改,則重新渲染這一項,否則復(fù)用之前的元素。
然而我們在使用的 v-for的時候經(jīng)常會使用index(即數(shù)組的下標(biāo))來作為key,但其實這是不推薦的一種使用方法。當(dāng)然如果這個列表只是存靜態(tài)的,這當(dāng)然是沒問題的,反之這個列表是動態(tài)的我們就不要用數(shù)組的index作為key來使用。
最后希望大家以后在使用v-for的時候盡量不要使用數(shù)組的index作為key來使用的,以免造成不必要的bug。