Skip to content

Commit 6bf06e0

Browse files
authored
docs: reorder defineExpose explanation (#2559)
1 parent 49c5c38 commit 6bf06e0

File tree

1 file changed

+107
-107
lines changed

1 file changed

+107
-107
lines changed

src/guide/essentials/template-refs.md

Lines changed: 107 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)