Vueチュートリアル 2日目
今日はイベントハンドリング〜コンポネントの基本まで行きました。
https://jp.vuejs.org/v2/guide/events.html
- イベントハンドリングは
v-on
ディレクティブ v-on:click='hoge'
みたいにかける。hogeの部分はメソッドでもいい。ちょっとした実行分も書けるけど冗長になるので基本的にメソッドに切り出すのが無難だと思う。$event
でDOMイベントを取れる。- イベント修飾子なるものが、非常に便利そうな匂いを醸し出しているけれど、まだよくわかっていない。あとイベント修飾子
passive
がまだよくわかっていない。 - キー修飾子もある。
- HTMLにこういうリスナを書くことはHTMLのテンプレートを眺めていれば「どういったイベントが発生するのか」わかりやすくなるという主張はなんとなく納得できた。
https://jp.vuejs.org/v2/guide/forms.html
- inputやtextareaみたいな入力内容のバインディングは
v-model
でできる。(勝手にv-input
とかが良いじゃないのか?なんでもmodelなんだ?と思ったけど、もっと勉強すればわかってくるのかな?) - textarea以外に、checkbox, selectboxなどにも使えて、valueをバインディングすることもできる。
- 修飾子
.lazy
は使えそう。 - あと地味に修飾子
number
とtrim
は、入力内容の余計な情報のトリミングに非常に役立ちそうな予感がした。
https://jp.vuejs.org/v2/guide/components.html
- componentの基本として、componentは名前付きの再利用可能なvueのインスタンスだということ。なので、hogeってcomponentを作って、一つのHTMLにhogeタグを3つ作ってもそれぞれ独立したインスタンスだということ。これは重要なことだと思う。そのhogeがなにかミュータブルな値を保持するコンポーネントだとして、インスタンスが別なので値を共有することはないということになる。
- dataには関数でなければいけない
Vue.componet('hoge', { data: function () { return { count: 0 } } })
dataオプションの中は関数でないといけない。
- componentは利用に当たりグローバルで登録するのと、ローカルで登録するの2種類がある。いままでの書き方はすべてグローバルな登録。
- componentはツリー構造になっている。
- 子のコンポネントに値を受け渡したいときはpropオプションを利用する。
- 単一ルート要素???
- イベントとメッセージは親のコンポネントに送ることができる。使いみちがぱっと思い浮かばなかったけど、リストをいっぺんに変更するとかそういう場面で使えそう。
- 親コンポネントにイベントを送出する場合は
$emit
メソッドがいいらしい。 - componentで
v-model
の使い方 - 動的コンポネント
- tableの中で使うtrみたいな特殊なケースで使われるタグ内でcomponentを使う場合は
is
を使う。
<table> <tr is="blog-post-row"></tr> </table>
こういったケースが関連しているのが、文字列テンプレート、単一ファイルコンポーネント、scriptタグ。。。。らしい。よくわかってない。
ここまでできたので、Todoアプリでも作りたい所存。