1. 程式人生 > >vue陣列優化的兩種方法track-by和key 這兩個有什麼區別

vue陣列優化的兩種方法track-by和key 這兩個有什麼區別

1.  v-bind:key="  " 是vue2.x提出的,1.x的寫法是track-by=" "

2、(1)vue1.x中v-for不能顯示重複資料,要在v-for的元素內定義track-by="$index",即以序號為索引,如此當增加或者刪除資料,view都會跟著改變。但是需要注意如此修改的資料並不能同步到頁面,因為其index並沒有改變。如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>track-by和key</title>
</head>
<body>
    <div id="app">
        <ul>
            <li v-for="item in list" track-by="$index">{{item}}</li>
        </ul>
    </div>

    <script src="vue1026.js"></script>
    <script>

        var vm = new Vue({
            el:"#app",
            data:{
                list:['orange','pear','pear','lemon','peach'],
            }

        });
    </script>
</body>
</html>

(2)vue2.x中v-for可以顯示重複的資料 ,不需要指定track-by或者key。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>track-by和key</title>
</head>
<body>
    <div id="app">
        <ul>
            <li v-for="item in list">{{item}}</li>
        </ul>
    </div>

    <script src="vue221.js"></script>
    <script>

        var vm = new Vue({
            el:"#app",
            data:{
                list:['orange','pear','pear','lemon','peach'],
            }

        });
    </script>
</body>
</html>

3、建議儘量在使用v-for時提供key,除非遍歷結果不需更新。

4、理想的track-by和key是遍歷物件每項都有且唯一的id

4、下面是vue2.x的官方文件對key的說明,可以知道v-for渲染元素列表預設用“就地複用”策略。