Template, slot に v:for を使った時の :key の設定について


#1
<template v:for="item in items">
  <slot :name="item.name">
    dummy
  </slot>
</template>

のようなコードを書く時、 v-for に対応する :key をバインドする必要はありますか?

template タグ、slot タグのどちらも、:key を書くとエラーになってしまいます。


#2

v-for は、その <template> を含む component を使う側で記述すると動くんじゃないかな?と思いました。


#3

返信ありがとうございます。
自分の解決したい問題を、簡潔にしすぎました。
実際には、

<template>
  コード色々
  <template v-for="item in items">
    <slot v-if="item.isOK" :name="item.name">
       dummy
    </slot>
    <div v-else :key="item.name">
      コード色々
    </div>
  </template>
  コード色々
</template>

というコード書いています。
v-else の方の div タグには :key を書けますが、
v-if の方の slot タグには :key を書けず困っています。
分かる方いらっしゃましたら、助けてください >_<


#4

以下のような情報があります。

vuejs / vue-loader issues
How to include other template in template #186

私も過去の you さんと同意見ですね。別 component にしては?と。その方がスッキリするかもしれないので。

今は functional があるという情報も補足されてますね。


#5

おぉ、なるほど。
内側の template を別コンポーネントにしてしまえば、
そのコンポーネントが slot から成ろうが、template から成ろうが、
コンポーネントになっているので、
:key を書くことができるということですね。

ありがとうございます!