emitで親コンポーネントの関数を呼び出す時に
emitの第2引数以降を、親コンポーネントの関数に渡すようになっています。
なので、引数を受け取る関数(親コンポーネントで呼び出された関数)が引数の変数名を適当なものにしても問題ありません。
js
1const hoge = 1;
2const piyo = fugaFunc(hoge);
3
4console.log(piyo);
5
6function fugaFunc(asgfsda) {
7 return asgfsda * 2;
8}
これでもconsole.log(piyo);
で、2
が出力されますよね!
現在のインスタンス上のイベントをトリガします。追加の引数はリスナのコールバックファンクションに渡されます。
参考ドキュメント
以上より
どこからそういった値を持ってくるのかわかりません。
の回答としては、
html
1<button v-on:click="$emit('enlarge-text', 0.1)">
2 Enlarge text
3</button>
の0.1
がenlargeAmount
に相当します。
追記(20200929)
ご確認ありがとうございます。
ご記載いただいた内容で概ね間違いないです。
しかし、若干異なる部分があります。
親コンポーネントではenlarge-textに何か変化がないか子を購読しておく。呼び出された際には、
onEnlargeTextというメソッドが動くように仕掛けておく
enlarge-text
の変化を購読しているのではなく、
「子コンポーネントがenlarge-text
というイベントを出したらonEnlargeTextというメソッドが動くように仕掛けておく」です。
例えば<button>
を子コンポーネントと、思うと
html
1<button @click="func">「func」の実行</button>
「buttonというコンポーネントがclick
というイベントを出したらfunc
というメソッドを動くように仕掛けておく」
に書き換えられます。
ご質問にある、
「emitの第2引数以降を、親コンポーネントの関数に渡す」
ということはemitの第2引数(0.1)を親コンポーネントの関数に渡したので
中身は0.1となる。。。ということなのでしょうか。。
はい。
例えば、以下のように、
「child
がtest_event
というイベント出したとき、func
というメソッドは
第1引数に1
,第2引数に2
,第3引数に3
を受け取り動きます。」
でも、第4・第5は未指定なので、undefined
が出力されます。
親コンポーネント
// template
<child @test_event="func" />
//methods
func: function(first, second, third, fourth, fifth) {
console.log(first); // => 1
console.log(second); // => 2
console.log(third); // => 3
console.log(fourth); // => undefined
console.log(fifth) // => undefined
}
子コンポーネント
//template
<div>
<button @click="childFunc" />
</div>
//methods
childFunc:function () {
this.$emit("test_event", 1, 2, 3);
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/28 10:17
2020/09/29 09:14
2020/09/30 01:28