@@ -113,113 +113,6 @@ watchEffect(() => {
113113
114114</div >
115115
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-
223116## コンポーネントでの参照 {#ref-on-component}
224117
225118> このセクションは、[ コンポーネント] ( /guide/essentials/component-basics ) についての知識があることを前提にしています。読み飛ばして、後で戻ってくるのでも大丈夫です。
@@ -346,3 +239,110 @@ export default {
346239上の例では、テンプレート参照を用いてこのコンポーネントを参照する親に、` publicData ` と ` publicMethod ` のみへのアクセスを許可します。
347240
348241</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