@@ -40,7 +40,7 @@ app.mount('#components-demo')
4040
4141<common-codepen-snippet title =" Component basics " slug =" abORVEJ " tab =" js,result " :preview =" false " />
4242
43- コンポーネントは再利用可能なインスタンスなので、` data ` 、 ` computed ` 、 ` watch ` 、 ` methods ` 、そしてライフサイクルフックのようなルートインスタンスと同様のオプションが利用可能です。唯一の例外は ` el ` のようなルート固有のオプションです。
43+ コンポーネントは再利用可能なインスタンスなので、` data ` 、 ` computed ` 、 ` watch ` 、 ` methods ` 、そしてライフサイクルフックのようなルートインスタンスと同様のオプションが利用可能です。
4444
4545## コンポーネントの再利用
4646
@@ -66,7 +66,7 @@ app.mount('#components-demo')
6666
6767例えば、 ヘッダー、サイドバー、コンテンツエリアなどのコンポーネントがあり、それぞれには一般的にナビゲーションリンクやブログ投稿などのコンポーネントが含まれています。
6868
69- これらのコンポーネントをテンプレートで使用するためには、 Vue がそれらを認識できるように登録する必要があります。 コンポーネントの登録には** グローバル** と** ローカル** の 2 種類があります。これまでは、アプリケーションの ` component ` メソッドを利用してグローバルに登録してきただけです:
69+ これらのコンポーネントをテンプレートで使用するためには、 Vue がそれらを認識できるように登録する必要があります。コンポーネントの登録には** グローバル** と** ローカル** の 2 種類があります。これまでは、アプリケーションの ` component ` メソッドを利用してグローバルに登録してきただけです:
7070
7171``` js
7272const app = Vue .createApp ({})
@@ -76,15 +76,15 @@ app.component('my-component-name', {
7676})
7777```
7878
79- グローバルに登録されたコンポーネントはその後作成された ` app ` インスタンスのテンプレートで使用することができます。さらに、ルートインスタンスのコンポーネントツリーの全てのサブコンポーネント内でも使用することが出来ます 。
79+ グローバルに登録されたコンポーネントは、アプリケーション内のどのコンポーネントのテンプレートでも使うことができます 。
8080
8181とりあえずコンポーネント登録についてはこれで以上ですが、このページを読み終えて十分に理解できたら、後から戻ってきて[ コンポーネント登録] ( component-registration.md ) の完全なガイドを読むことをお勧めします。
8282
8383## プロパティを用いた子コンポーネントへのデータの受け渡し
8484
85- 先ほど、 ブログ投稿用のコンポーネントの作成について触れました。問題は、 表示する特定の投稿のタイトルや内容のようなデータを作成したコンポーネントに渡せなければそのコンポーネントは役に立たないということです。プロパティはここで役立ちます。
85+ 先ほど、ブログ投稿用のコンポーネントの作成について触れました。問題は、表示する特定の投稿のタイトルや内容のようなデータを作成したコンポーネントに渡せなければそのコンポーネントは役に立たないということです。プロパティはここで役立ちます。
8686
87- プロパティはコンポーネントに登録できるカスタム属性です。値がプロパティ属性に渡されると、そのコンポーネントインスタンスのプロパティになります。先ほどのブログ投稿用のコンポーネントにタイトルを渡すためには、` props ` オプションを用いてこのコンポーネントが受け取るプロパティのリストの中に含めることができます:
87+ プロパティはコンポーネントに登録できるカスタム属性です。値がプロパティ属性に渡されると、そのコンポーネントインスタンスのプロパティになります。先ほどのブログ投稿用のコンポーネントにタイトルを渡すためには、` props ` オプションを用いてこのコンポーネントが受け取るプロパティのリストの中に含めることができます:
8888
8989``` js
9090const app = Vue .createApp ({})
@@ -97,9 +97,11 @@ app.component('blog-post', {
9797app .mount (' #blog-post-demo' )
9898```
9999
100- コンポーネントは必要に応じて多くのプロパティを持つことができ、デフォルトでは任意のプロパティに任意の値を渡すことができます。上記のテンプレートでは、 ` data ` と同様に、コンポーネントインスタンスでこの値にアクセスできることが分かります 。
100+ プロパティ属性に値が渡されると、渡されたそのコンポーネントインスタンスのプロパティになります。そのプロパティの値は、他のコンポーネントのプロパティと同じように、テンプレート内でアクセスができます 。
101101
102- プロパティが登録されたら、 次のようにカスタム属性としてデータをプロパティに渡すことができます:
102+ コンポーネントは必要に応じて多くのプロパティを持つことができ、デフォルトでは任意のプロパティに任意の値を渡すことができます。
103+
104+ プロパティが登録されたら、次のようにカスタム属性としてデータをプロパティに渡すことができます:
103105
104106``` html
105107<div id =" blog-post-demo" class =" demo" >
@@ -154,7 +156,7 @@ app.mount('#blog-posts-demo')
154156
155157## 子コンポーネントのイベントを購読する
156158
157- ` <blog-post> ` コンポーネントを開発する中で、いくつかの機能で親コンポーネントとの通信が必要になるかもしれません。例えば、残りの部分の大きさはそのままで、ブログ記事の文字の文字を拡大するアクセシビリティ機能を実装することを決めるかもしれません 。
159+ ` <blog-post> ` コンポーネントを開発する中で、いくつかの機能で親コンポーネントとの通信が必要になるかもしれません。例えば、ページの他の部分の大きさはそのままで、ブログ記事のテキストを拡大するアクセシビリティ機能を実装することを決めるかもしれません 。
158160
159161親コンポーネントでは、` postFontSize ` データプロパティを追加することでこの機能をサポートすることができます:
160162
@@ -171,7 +173,7 @@ const App = {
171173}
172174```
173175
174- すべてのブログ投稿のフォントサイズを制御するためにテンプレート内で使用できます :
176+ これはすべてのブログ投稿のフォントサイズを制御するためにテンプレート内で使用できます :
175177
176178``` html
177179<div id =" blog-posts-events-demo" >
@@ -209,25 +211,25 @@ app.component('blog-post', {
209211</button >
210212```
211213
212- ボタンをクリックすると、全ての投稿のテキストを拡大する必要があることを親に伝える必要があります。親は、ネイティブ DOM イベントでの場合と同様に、 ` v-on ` や ` @ ` を用いて子コンポーネントのインスタンスでのイベントを購読することができます:
214+ ボタンをクリックすると、全ての投稿のテキストを拡大する必要があることを親に伝える必要があります。この問題を解決するために、コンポーネントインスタンスはカスタムイベントの仕組みを提供しています。 親は、ネイティブ DOM イベントでの場合と同様に、 ` v-on ` や ` @ ` を用いて子コンポーネントのインスタンスでのイベントを購読することができます:
213215
214216``` html
215217<blog-post ... @enlarge-text =" postFontSize += 0.1" ></blog-post >
216218```
217219
218- そして子コンポーネントはビルトインの [ ** ` $emit ` ** メソッド] ( ../api/instance-methods.html#emit ) にイベントの名前を渡して呼び出すことで、イベントを送出することができます :
220+ そして子コンポーネントはビルトインの [ ** ` $emit ` ** メソッド] ( ../api/instance-methods.html#emit ) にイベントの名前を渡して呼び出すことで、イベントを発行することができます :
219221
220222``` html
221223<button @click =" $emit('enlargeText')" >
222224 Enlarge text
223225</button >
224226```
225227
226- 親コンポーネントは ` v-on: enlarge-text="postFontSize += 0.1"` リスナーによって、このイベントを受け取り ` postFontSize ` を更新することができます 。
228+ ` @ enlarge-text="postFontSize += 0.1"` リスナによって、親コンポーネントはこのイベントを受け取り ` postFontSize ` の値を更新することができます 。
227229
228230<common-codepen-snippet title =" Component basics: emitting events " slug =" KKpGyrp " tab =" html,result " :preview =" false " />
229231
230- コンポーネントの ` emits ` オプションにより排出されたイベントをリストアップすることができます。
232+ コンポーネントの ` emits ` オプションにより発行されたイベントを一覧することができます:
231233
232234``` js
233235app .component (' blog-post' , {
@@ -238,9 +240,9 @@ app.component('blog-post', {
238240
239241これにより、コンポーネントが排出する全てのイベントをチェックし、オプションでそれらを[ 検証する] ( component-custom-events.html#validate-emitted-events ) ことができます。
240242
241- ### イベントと値を送出する
243+ ### イベントと値を発行する
242244
243- イベントを特定の値と一緒に送出すると便利な場合があります 。例えば、テキストをどれだけ大きく表示するかを ` <blog-post> ` コンポーネントの責務とさせたいかもしれません。そのような場合、 ` $emit ` の第二引数を使ってこの値を渡すことができます:
245+ イベントを特定の値と一緒に発行すると便利な場合があります 。例えば、テキストをどれだけ大きく表示するかを ` <blog-post> ` コンポーネントの責務とさせたいかもしれません。そのような場合、 ` $emit ` の第二引数を使ってこの値を渡すことができます:
244246
245247``` html
246248<button @click =" $emit('enlargeText', 0.1)" >
@@ -300,13 +302,14 @@ methods: {
300302これが実際に機能するためには、テンプレート内の ` <input> ` は以下でなければなりません:
301303
302304- ` value ` 属性を ` modelValue ` プロパティにバインドする
303- - ` input ` では、 ` update:modelValue ` イベントを新しい値と共に送出する
305+ - ` input ` では、 ` update:modelValue ` イベントを新しい値と共に発行する
304306
305307以下のようになります:
306308
307309``` js
308310app .component (' custom-input' , {
309311 props: [' modelValue' ],
312+ emits: [' update:modelValue' ],
310313 template: `
311314 <input
312315 :value="modelValue"
@@ -322,15 +325,12 @@ app.component('custom-input', {
322325<custom-input v-model =" searchText" ></custom-input >
323326```
324327
325- カスタムコンポーネント内で ` v-model ` を使うもう一つの方法は ` computed ` プロパティを利用してゲッターとセッターを定義することです。
326-
327- 以下の例では、computed プロパティを用いて ` custom-input ` コンポーネントをリファクタリングします。
328-
329- 注意して欲しいのは、 ` get ` メソッドは ` modelValue ` 属性を返し、バインディングに使用しているプロパティがどれであるかに関わらず、 ` set ` メソッドはそのプロパティに対応する ` $emit ` を送出しなければならないということです。
328+ このコンポーネント内で ` v-model ` を実装するもう一つの方法は ` computed ` プロパティの機能を使ってゲッターとセッターを定義することです。 ` get ` メソッドは ` modelValue ` プロパティを返して、 ` set ` メソッドは対応するイベントを発行する必要があります。
330329
331330``` js
332331app .component (' custom-input' , {
333332 props: [' modelValue' ],
333+ emits: [' update:modelValue' ],
334334 template: `
335335 <input v-model="value">
336336 ` ,
@@ -363,7 +363,7 @@ HTML 要素のように、コンポーネントに要素を渡すことができ
363363
364364<common-codepen-snippet title =" Component basics: slots " slug =" jOPeaob " :preview =" false " />
365365
366- 幸いにも、この作業は Vue のカスタム ` <slot> ` 要素により非常に簡単になります :
366+ これは、 Vue のカスタム ` <slot> ` 要素で達成できます :
367367
368368``` js
369369app .component (' alert-box' , {
@@ -376,7 +376,7 @@ app.component('alert-box', {
376376})
377377```
378378
379- 上で見た通り、ただ渡したいところにスロットを追加するだけです 。それだけです。終わりです!
379+ 上で見た通り、コンテンツを配置したいところにプレースホルダとして ` <slot> ` を使います 。それだけです。終わりです!
380380
381381とりあえずスロットについてはこれで以上ですが、このページを読み終えて十分に理解できたら、後から戻ってきて[ スロット] ( component-slots.md ) の完全なガイドを読むことをお勧めします。
382382
@@ -386,7 +386,7 @@ app.component('alert-box', {
386386
387387<common-codepen-snippet title =" Component basics: dynamic components " slug =" oNXaoKy " :preview =" false " />
388388
389- 上記は Vue の ` <component> ` 属性に特別な属性である ` is ` を持たせることで実現しています :
389+ 上記は Vue の ` <component> ` 要素に特別な ` is ` 属性を持たせることで実現しています :
390390
391391``` html
392392<!-- コンポーネントは currentTabComponent に変更があったときに変更されます -->
@@ -400,7 +400,7 @@ app.component('alert-box', {
400400
401401完全なコードを試すには [ この例] ( https://codepen.io/team/Vue/pen/oNXaoKy ) 、登録された名前ではなくコンポーネントのオプションオブジェクトをバインドしている例は[ こちらのバージョン] ( https://codepen.io/team/Vue/pen/oNXapXM ) を参照してください。
402402
403- この属性は通常の HTML 要素で使用することができますが、それらはコンポーネントとして扱われ、すべての属性は ** DOM 属性としてバインドされる ** ことを覚えておいてください。 ` value ` のようないくつかのプロパティが期待通りに動作するためには、 [ ` .prop ` 修飾子 ] ( ../api/directives.html#v-bind ) を用いてバインドする必要があります 。
403+ また、 ` is ` 属性を使って通常の HTML 要素を作ることもできます 。
404404
405405とりあえず動的なコンポーネントについてはこれで以上ですが、このページを読み終えて十分に理解できたら、後から戻ってきて[ 動的 & 非同期コンポーネント] ( ./component-dynamic-async.html ) の完全なガイドを読むことをお勧めします。
406406
@@ -416,7 +416,7 @@ app.component('alert-box', {
416416</table >
417417```
418418
419- このカスタムコンポート ` <blog-post-row> ` は無効なコンテンツとして摘み出され、最終的に描画された内容にエラーが発生します。幸い、これを回避するために ` v-is ` という特殊なディレクティブを使用することができます :
419+ このカスタムコンポーネント ` <blog-post-row> ` は無効なコンテンツとして巻き取られ、最終的にレンダリングされた出力でエラーが発生します。回避策として特別な ` v-is ` ディレクティブを使うことができます :
420420
421421``` html
422422<table >
@@ -425,7 +425,7 @@ app.component('alert-box', {
425425```
426426
427427::: warning
428- ` v-is ` の値は JavaScript の文字列リテラルである必要があります :
428+ ` v-is ` の値は JavaScript の式として扱われるので、コンポーネント名を引用符で囲む必要があります :
429429
430430``` html
431431<!-- 間違い、何も出力されません-->
0 commit comments