@@ -113,113 +113,6 @@ watchEffect(() => {
113
113
114
114
</div >
115
115
116
- ## ` v-for ` の中の参照 {#refs-inside-v-for}
117
-
118
- > v3.5 以降が必要です。
119
-
120
- <div class =" composition-api " >
121
-
122
- ` v-for ` の中で ` ref ` を使用すると、対応する参照には配列値が格納されます。そしてこの配列値には、マウント後の要素が代入されます:
123
-
124
- ``` vue
125
- <script setup>
126
- import { ref, useTemplateRef, onMounted } from 'vue'
127
-
128
- const list = ref([
129
- /* ... */
130
- ])
131
-
132
- const itemRefs = useTemplateRef('items')
133
-
134
- onMounted(() => console.log(itemRefs.value))
135
- </script>
136
-
137
- <template>
138
- <ul>
139
- <li v-for="item in list" ref="items">
140
- {{ item }}
141
- </li>
142
- </ul>
143
- </template>
144
- ```
145
-
146
- [ Playground で試す] ( https://play.vuejs.org/#eNp9UsluwjAQ/ZWRLwQpDepyQoDUIg6t1EWUW91DFAZq6tiWF4oU5d87dtgqVRyyzLw3b+aN3bB7Y4ptQDZkI1dZYTw49MFMuBK10dZDAxZXOQSHC6yNLD3OY6zVsw7K4xJaWFldQ49UelxxVWnlPEhBr3GszT6uc7jJ4fazf4KFx5p0HFH+Kme9CLle4h6bZFkfxhNouAIoJVqfHQSKbSkDFnVpMhEpovC481NNVcr3SaWlZzTovJErCqgydaMIYBRk+tKfFLC9Wmk75iyqg1DJBWfRxT7pONvTAZom2YC23QsMpOg0B0l0NDh2YjnzjpyvxLrYOK1o3ckLZ5WujSBHr8YL2gxnw85lxEop9c9TynkbMD/kqy+svv/Jb9wu5jh7s+jQbpGzI+ZLu0byEuHZ+wvt6Ays9TJIYl8A5+i0DHHGjvYQ1JLGPuOlaR/TpRFqvXCzHR2BO5iKg0Zmm/ic0W2ZXrB+Gve2uEt1dJKs/QXbwePE )
147
-
148
- <details >
149
- <summary >3.5 以前の使用方法</summary >
150
-
151
- ` useTemplateRef() ` が導入されていなかった 3.5 以前のバージョンでは、テンプレートの ref 属性の値と一致する名前で ref を宣言する必要があります。 ref には配列の値も含まれます:
152
-
153
- ``` vue
154
- <script setup>
155
- import { ref, onMounted } from 'vue'
156
-
157
- const list = ref([
158
- /* ... */
159
- ])
160
-
161
- const itemRefs = ref([])
162
-
163
- onMounted(() => console.log(itemRefs.value))
164
- </script>
165
-
166
- <template>
167
- <ul>
168
- <li v-for="item in list" ref="itemRefs">
169
- {{ item }}
170
- </li>
171
- </ul>
172
- </template>
173
- ```
174
-
175
- </details >
176
-
177
- </div >
178
- <div class =" options-api " >
179
-
180
- ` v-for ` の中で ` ref ` を使用すると、結果として得られる参照の値は、対応する要素を格納する配列になります:
181
-
182
- ``` vue
183
- <script>
184
- export default {
185
- data() {
186
- return {
187
- list: [
188
- /* ... */
189
- ]
190
- }
191
- },
192
- mounted() {
193
- console.log(this.$refs.items)
194
- }
195
- }
196
- </script>
197
-
198
- <template>
199
- <ul>
200
- <li v-for="item in list" ref="items">
201
- {{ item }}
202
- </li>
203
- </ul>
204
- </template>
205
- ```
206
-
207
- [ Playground で試す] ( https://play.vuejs.org/#eNpFjk0KwjAQha/yCC4Uaou6kyp4DuOi2KkGYhKSiQildzdNa4WQmTc/37xeXJwr35HEUdTh7pXjszT0cdYzWuqaqBm9NEDbcLPeTDngiaM3PwVoFfiI667AvsDhNpWHMQzF+L9sNEztH3C3JlhNpbaPNT9VKFeeulAqplfY5D1p0qurxVQSqel0w5QUUEedY8q0wnvbWX+SYgRAmWxIiuSzm4tBinkc6HvkuSE7TIBKq4lZZWhdLZfE8AWp4l3T )
208
-
209
- </div >
210
-
211
- 参照の配列では、元の配列と同じ順序が** 保証されない** ことに注意する必要があります。
212
-
213
- ## 関数を使った参照 {#function-refs}
214
-
215
- ` ref ` 属性は、文字列のキーの代わりに、関数にバインドすることもできます。関数はコンポーネントが更新されるたびに呼び出され、要素の参照をどこに保持するかを柔軟に決めることができます。関数は、第 1 引数として要素への参照を受け取ります:
216
-
217
- ``` vue-html
218
- <input :ref="(el) => { /* el をプロパティまたは ref に保持する */ }">
219
- ```
220
-
221
- 動的な ` :ref ` のバインディングを使っていることに注目してください。これにより、参照の名前を示す文字列ではなく、関数を渡すことが可能になります。要素がアンマウントされると、引数は ` null ` になります。もちろん、インライン関数のほかに、メソッドを指定することもできます。
222
-
223
116
## コンポーネントでの参照 {#ref-on-component}
224
117
225
118
> このセクションは、[ コンポーネント] ( /guide/essentials/component-basics ) についての知識があることを前提にしています。読み飛ばして、後で戻ってくるのでも大丈夫です。
@@ -346,3 +239,110 @@ export default {
346
239
上の例では、テンプレート参照を用いてこのコンポーネントを参照する親に、` publicData ` と ` publicMethod ` のみへのアクセスを許可します。
347
240
348
241
</div >
242
+
243
+ ## ` v-for ` の中の参照 {#refs-inside-v-for}
244
+
245
+ > v3.5 以降が必要です。
246
+
247
+ <div class =" composition-api " >
248
+
249
+ ` v-for ` の中で ` ref ` を使用すると、対応する参照には配列値が格納されます。そしてこの配列値には、マウント後の要素が代入されます:
250
+
251
+ ``` vue
252
+ <script setup>
253
+ import { ref, useTemplateRef, onMounted } from 'vue'
254
+
255
+ const list = ref([
256
+ /* ... */
257
+ ])
258
+
259
+ const itemRefs = useTemplateRef('items')
260
+
261
+ onMounted(() => console.log(itemRefs.value))
262
+ </script>
263
+
264
+ <template>
265
+ <ul>
266
+ <li v-for="item in list" ref="items">
267
+ {{ item }}
268
+ </li>
269
+ </ul>
270
+ </template>
271
+ ```
272
+
273
+ [ Playground で試す] ( https://play.vuejs.org/#eNp9UsluwjAQ/ZWRLwQpDepyQoDUIg6t1EWUW91DFAZq6tiWF4oU5d87dtgqVRyyzLw3b+aN3bB7Y4ptQDZkI1dZYTw49MFMuBK10dZDAxZXOQSHC6yNLD3OY6zVsw7K4xJaWFldQ49UelxxVWnlPEhBr3GszT6uc7jJ4fazf4KFx5p0HFH+Kme9CLle4h6bZFkfxhNouAIoJVqfHQSKbSkDFnVpMhEpovC481NNVcr3SaWlZzTovJErCqgydaMIYBRk+tKfFLC9Wmk75iyqg1DJBWfRxT7pONvTAZom2YC23QsMpOg0B0l0NDh2YjnzjpyvxLrYOK1o3ckLZ5WujSBHr8YL2gxnw85lxEop9c9TynkbMD/kqy+svv/Jb9wu5jh7s+jQbpGzI+ZLu0byEuHZ+wvt6Ays9TJIYl8A5+i0DHHGjvYQ1JLGPuOlaR/TpRFqvXCzHR2BO5iKg0Zmm/ic0W2ZXrB+Gve2uEt1dJKs/QXbwePE )
274
+
275
+ <details >
276
+ <summary >3.5 以前の使用方法</summary >
277
+
278
+ ` useTemplateRef() ` が導入されていなかった 3.5 以前のバージョンでは、テンプレートの ref 属性の値と一致する名前で ref を宣言する必要があります。 ref には配列の値も含まれます:
279
+
280
+ ``` vue
281
+ <script setup>
282
+ import { ref, onMounted } from 'vue'
283
+
284
+ const list = ref([
285
+ /* ... */
286
+ ])
287
+
288
+ const itemRefs = ref([])
289
+
290
+ onMounted(() => console.log(itemRefs.value))
291
+ </script>
292
+
293
+ <template>
294
+ <ul>
295
+ <li v-for="item in list" ref="itemRefs">
296
+ {{ item }}
297
+ </li>
298
+ </ul>
299
+ </template>
300
+ ```
301
+
302
+ </details >
303
+
304
+ </div >
305
+ <div class =" options-api " >
306
+
307
+ ` v-for ` の中で ` ref ` を使用すると、結果として得られる参照の値は、対応する要素を格納する配列になります:
308
+
309
+ ``` vue
310
+ <script>
311
+ export default {
312
+ data() {
313
+ return {
314
+ list: [
315
+ /* ... */
316
+ ]
317
+ }
318
+ },
319
+ mounted() {
320
+ console.log(this.$refs.items)
321
+ }
322
+ }
323
+ </script>
324
+
325
+ <template>
326
+ <ul>
327
+ <li v-for="item in list" ref="items">
328
+ {{ item }}
329
+ </li>
330
+ </ul>
331
+ </template>
332
+ ```
333
+
334
+ [ Playground で試す] ( https://play.vuejs.org/#eNpFjk0KwjAQha/yCC4Uaou6kyp4DuOi2KkGYhKSiQildzdNa4WQmTc/37xeXJwr35HEUdTh7pXjszT0cdYzWuqaqBm9NEDbcLPeTDngiaM3PwVoFfiI667AvsDhNpWHMQzF+L9sNEztH3C3JlhNpbaPNT9VKFeeulAqplfY5D1p0qurxVQSqel0w5QUUEedY8q0wnvbWX+SYgRAmWxIiuSzm4tBinkc6HvkuSE7TIBKq4lZZWhdLZfE8AWp4l3T )
335
+
336
+ </div >
337
+
338
+ 参照の配列では、元の配列と同じ順序が** 保証されない** ことに注意する必要があります。
339
+
340
+ ## 関数を使った参照 {#function-refs}
341
+
342
+ ` ref ` 属性は、文字列のキーの代わりに、関数にバインドすることもできます。関数はコンポーネントが更新されるたびに呼び出され、要素の参照をどこに保持するかを柔軟に決めることができます。関数は、第 1 引数として要素への参照を受け取ります:
343
+
344
+ ``` vue-html
345
+ <input :ref="(el) => { /* el をプロパティまたは ref に保持する */ }">
346
+ ```
347
+
348
+ 動的な ` :ref ` のバインディングを使っていることに注目してください。これにより、参照の名前を示す文字列ではなく、関数を渡すことが可能になります。要素がアンマウントされると、引数は ` null ` になります。もちろん、インライン関数のほかに、メソッドを指定することもできます。
0 commit comments