Map 型はいいぞ。ES6 からサポートされた本物の連想配列だ。と、みなさんが賞賛していたので積極的に使っていたのですが Vue.js の data に使っていると何やら挙動がおかしいのです。変更しても再描画されない。リアクティブになってくれてないようなのです。
そこで検証してみたのがこちらです。
See the Pen Vue.js Map Class Reactive Test by Akira Ikeda (@akicho8) on CodePen.
- 似非連想配列を普通に更新 (Vue.js を始めた人がはまるやつ)
- 似非連想配列を Vue.set を使って更新
- Map 型を普通に更新
- Map 型を Vue.set を使って更新
これの2番目だけが成功します。悲しいことに 3, 4 の Map 型は無反応です。
リアクティブの探求 — Vue.js
https://jp.vuejs.org/v2/guide/reactivity.html
によると、
プレーンな JavaScript オブジェクトを (略) getter/setter に変換します。
とあってどこまでがプレーンなのかよくわからなかったのですが Map 型は含まれていないということです。
ご注意ください。