Vue
Vue3 リファレンス
Vue2 スタイルガイド
VsCodeが遅い
nextTickの順番
JSではローカル変数の再代入を追跡することはできない(その仕組みがないため) ただしオブジェクトのプロパティの変更は追跡できる。(jsのproxyを使用して)
リアクティブ性とは
リアクティブ性というのは、 プロパティが変更されたらそれを検知してそのプロパティが使用されている関数を自動的に再計算することと言い換えることができます。つまり、これを実現するにはプロパティ毎にそのプロパティがどんな関数で使われているかを保存しておく、そのプロパティの更新時に関連する関数をすべて再計算する、機能があれば良いわけです。どうですか?なんだかできそうな気がしてきませんか?
Vue リアクティブになる基本の仕組み
Vue のリアクティブシステム
Vue のリアクティブシステムの落とし穴
完結に言うと、Vueでは配列とオブジェクトはリアクティブにならない
配列の上書きでまず書学者はつまずく
配列の中に新たなプロパティを生やそうとしても、Vue.jsはそれを監視していないため、値の更新検知や再描画ができないよ。新しくインスタンスを作ってあげてね。ということでした。
let arr = [1, 2, 3];
let arr2 = [4, 5, 6];
arr = arr2; // ここで新たな参照値になる期待をする
console.log(arr); // しかし上書きされない [1, 2, 3]
@vue/composition-apiと@nuxtjs/composition-apiでのcontextの違い
@vue/composition-apiでは呼び出し時に context を引数として渡す @nuxtjs/composition-apiでは呼び出された場所の context を useContext で取得できる
emit
親コンポーネントでイベントを登録しこれに反応して実行されるメソッドを定義すると、@todoSubmit="addTodo" # addTodoのこと
addTodoの第一引数には子からemitされた際に渡されたデータが入ります。
v-on
v-onディレクティブを使用することでHTMLの要素のイベントにイベントハンドラーのメソッドをバインド(紐付ける)して処理を行うことができる
.once修飾子 v-onディレクティブでバインドしたメソッドは、clickやchangeなどのイベントが発生するたびに 実行されますが、アプリケーションの仕様によっては、イベントを初回の1回のみだけ実行したい場合があります。
.once修飾子をイベントに対して指定した時の動作は、イベントターゲットの要素にaddEventListener()メソッドでイベントリスナーを登録する際にaddEventListener()メソッドの第3引数のoptionsに { once: true }
を指定した時と同様の動作になります。
slot
親となるコンポーネント側から、子のコンポーネントの一部に差し込む機能。 3種類ある
デフォルトslotと名前付きslotがある。
Vueの検知ができないパターン
Vueでは遷移先が同一コンポーネントである場合、仮想DOM等の差分が検知できず→インスタンスを使いまわそうとするため、fetchすべきデータをうまく取得できない場合がある。 そのためwatchなどでパラメーターを監視する必要がある(可変なパラメーターなどを監視する)
v-model を正しく理解して親子間コンポーネントのデータ伝播をマスターする
v-model を正しく理解して親子間コンポーネントのデータ伝播をマスターする
set関連
ref
const currentPage = ref(0);
currentPage.value = page.value;
isRef(currentPage); // true 代入ではリアクティブは失われない。