〇背景
propsという単語を知っており、なおかつ業務ではすでに用意されたpropsを利用している。
早めに理解すべきだと悟り、とりあえずここに書く。
なんか作ったコンポーネントをたどっていくとconst props = defineProps({~})ってなってるよね~。
〇調べる前の自分の認識
プロパティ、値という認識しかない。ここで定義された変数?は上の階層で使われたときに
そのまま読み取られる。いわゆる属性をある程度定義時に固定が出来る?
上から編集されないように下である程度コンポーネントの属性を決めるもの
〇今回のコード例
「:」の有無
- 1行目 → 常に
"primary" - 2行目 →
btnTypeの値が変わるたびに更新される - 3行目 → 条件によって
"danger"か"primary"
〇調べた結果
親から子供コンポーネントへ渡す際に受け取る仕組み。
子供側でtype(型)を定義しながら、props変数に代入して子供の状態を変化させる。
子供に命令を下すための仲介に必要。
「:」が親側についているときがあるが、「:」がついていたら固定値、ついていなかったら式(文字列リテラル)とのこと。
class=~については子供が定義していないが、Vueとしては「一応付けられるからつけとくよ。でも何も読み込まないからね。」tailwind「お、class=~ってついとるやんけ。じゃあ色変えたろ」
というように働いている。
〇動作解説(図解やコメント付きコード)
特になし
〇実務での注意点
props側では属性ごとに最低type(型)・required(必須か否か)・defaultが設定されている。
@clickなどがあるが、これは本来子供側が持ちうるアクション(buttonだったら@click)を親側でそうやるように命令している。基本親側にそのアクションする関数が定義されている。
〇まとめ・所感
謎が残った点:idなど親で定義しているはずのものが、子コンポーネントに渡っていない
まだ完全理解ではないが、大まかな理解は完了。
特に簡単なボタン操作や真偽値を渡す際の挙動は分かりやすかった。
ただ、まだそれに乗じて子供に渡されていない謎の属性もある。
こちらは一つ一つ詰めていくしかない。


