<template> <div> <ul> <li v-for="(item, i) in ms" :key="i">{{item}}</li> </ul> <button @click="change()">點擊</button> </div> </template> <script> export default { data () { return { ms: [1, 2, 3] } }, methods: { change () { this.ms[0] = 100 console.log(this.ms) } }, onLoad (params) { this.keyword = params.keyword } } </script>
上面的代碼想要實現點擊按鈕修改數組第一個元素的值。
然而,實際運行后發現控制台打印的數據顯示已經修改成功了,但是頁面上的數據卻沒有更新(不是響應式的)。
是什么原因導致的呢?我查了一下官方文檔,文檔中內容如下:
文檔中明確指出,vue不能檢測上述數組的變動,同時文檔中也指出了實現上述需求的方法:
將 change() 函數中的代碼 this.ms[0] = 100 改寫為 this.set(this.ms, 0, 100)
這樣,修改數組中單個元素值的需求就實現了