vue的v-for里的key可以都用index吗

              <Select
                  :label-in-value='true'
                  @on-change='choosePartyOther(index,$event)'
                  v-model="item.enterpriseName"
                  filterable
                  remote
                  :remote-method="remoteMethod3"
                  :loading="loading3">
                  <Option v-for="(option, index) in options1" :value="option.value" 
                  :key="index">{{option.label}}</Option>
              </Select>   

比如上面这样,这是用的iview里的select

回答:

key 的特殊属性主要用在 Vue的虚拟DOM算法,在新旧nodes对比时辨识VNodes。如果不使用key,Vue会使用一种最大限度减少动态元素并且尽可能的尝试修复/再利用相同类型元素的算法。使用key,它会基于key的变化重新排列元素顺序,并且会移除key不存在的元素。

"有相同父元素的子元素必须有独特的key。重复的key会造成渲染错误。"

回答:

最好不要用index,因为key值就相当于当前元素的一个身份名牌,需要是独一无二的,这样在更新数据的时候,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过(通过key值确认)的每个元素,你用下标的话,如果数组发生改变,就有可能出现相同的key值,这样的话Vue又要比较这两个相同key值的dom元素(本来通过key值就能确定的)。具体可以参照官方文档的说明

回答:

只要保证key是唯一值就行了
看看官方文档,点这里
clipboard.png

回答:

可以,只是性能不好,因为在一些情况下需要重新diff整个虚拟dom树。

回答:

可以,但是不利于重用现有元素,

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注