[Vue.js]配列の変更が検知できない理由の「JavaScriptの制限」って何よ! - Qiita
こちらの記事で配列の更新検知にはVue.set
を使うと記載したのですが、
どうして検知できるのかな?って思って調べました。
結論
内部ではsplice()
をしているだけだった。
実装を見てみる
公式GitHubを見てみましょう!
export function set (target: Array<any> | Object, key: any, val: any): any {
// 中略
if (Array.isArray(target) && isValidArrayIndex(key)) {
target.length = Math.max(target.length, key)
target.splice(key, 1, val) //ここだ!
return val
}
...
ありました!
内部でtarget.splice(key, 1, val)
をしていることが確認できました!
だから検知できるんですね!