Skip to content

Commit aa0ffff

Browse files
authored
#14 Components In-Depth > Non-Prop Attributes の翻訳 (#74)
* update * update * update * update * fix * Update component-attrs.md * Update component-attrs.md
1 parent 938d443 commit aa0ffff

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

src/guide/component-attrs.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# Non-Prop Attributes
1+
# プロパティでない属性
22

3-
> This page assumes you've already read the [Components Basics](component-basics.md). Read that first if you are new to components.
3+
> このページは [コンポーネントの基本](component-basics.md) が読まれていることが前提となっています。 コンポーネントを扱った事のない場合はこちらのページを先に読んでください。
44
5-
A component non-prop attribute is an attribute or event listener that is passed to a component, but does not have a corresponding property defined in [props](component-props) or [emits](component-custom-events.html#defining-custom-events). Common examples of this include `class`, `style`, and `id` attributes.
5+
プロパティでない属性とは、コンポーネントに渡される属性やイベントリスナのうち、[props](component-props) [emits](component-custom-events.html#defining-custom-events) で定義されたものを除いたものをいいます。よくある例としては、コンポーネント要素タグに付与する `class``style``id` などの属性があります。
66

7-
## Attribute Inheritance
7+
## 属性の継承
88

9-
When a component returns a single root node, non-prop attributes will automatically be added to the root node's attributes. For example, in the instance of a date-picker component:
9+
ただ一つのルート要素をもつコンポーネントの場合、プロパティでない属性はルート要素にそのまま追加されます。例えば date-picker コンポーネントの場合は次のような形になります。
1010

1111
```js
1212
app.component('date-picker', {
@@ -18,19 +18,19 @@ app.component('date-picker', {
1818
})
1919
```
2020

21-
In the event we need to define the status of the date-picker component via a `data-status` property, it will be applied to the root node (i.e., `div.date-picker`).
21+
`data-status` 属性を用いて date-picker コンポーネントの状態を定義するような場合には、この属性はルート要素 (すなわち `div.date-picker`) に適用されます。
2222

2323
```html
24-
<!-- Date-picker component with a non-prop attribute -->
24+
<!-- プロパティでない属性 とともに用いられる Date-picker コンポーネント -->
2525
<date-picker data-status="activated"></date-picker>
2626

27-
<!-- Rendered date-picker component -->
27+
<!-- 実際には以下のような形で描画されます -->
2828
<div class="date-picker" data-status="activated">
2929
<input type="datetime" />
3030
</div>
3131
```
3232

33-
Same rule applies to the event listeners:
33+
イベントリスナについても同様のことが言えます。
3434

3535
```html
3636
<date-picker @change="submitChange"></date-picker>
@@ -44,7 +44,7 @@ app.component('date-picker', {
4444
})
4545
```
4646

47-
This might be helpful when we have an HTML element with `change` event as a root element of `date-picker`.
47+
このような実装は、`date-picker` のルート要素で `change` イベントを扱うケースなどで役に立つでしょう。
4848

4949
```js
5050
app.component('date-picker', {
@@ -58,7 +58,7 @@ app.component('date-picker', {
5858
})
5959
```
6060

61-
In this case, `change` event listener is passed from the parent component to the child and it will be triggered on native `<select>` `change` event. We won't need to emit an event from the `date-picker` explicitly:
61+
この場合、 `change` イベントリスナは、親から子へ渡され、`<select>` 要素本来の `change` イベントにより発火されます。特段、`date-picker` からの明示的なイベント処理を記述する必要はありません。
6262

6363
```html
6464
<div id="date-picker" class="demo">
@@ -70,21 +70,21 @@ In this case, `change` event listener is passed from the parent component to the
7070
const app = Vue.createApp({
7171
methods: {
7272
showChange(event) {
73-
console.log(event.target.value) // will log a value of the selected option
73+
console.log(event.target.value) // 選択された option の値が表示される
7474
}
7575
}
7676
})
7777
```
7878

79-
## Disabling Attribute Inheritance
79+
## 属性の継承の無効化
8080

81-
If you do **not** want a component to automatically inherit attributes, you can set `inheritAttrs: false` in the component's options.
81+
コンポーネントのオプション内で、`inheritAttrs: false`を指定することで、属性の継承を **無効化** することも可能です。
8282

83-
The common scenario for disabling an attribute inheritance is when attributes need to be applied to other elements besides the root node.
83+
一般的に属性の継承の無効化は、ルート要素ではない別の要素に属性を適用したいようなケースで利用される場面が考えられるでしょう。
8484

85-
By setting the `inheritAttrs` option to `false`, this gives you access to the component's `$attrs` property, which includes all attributes not included to component `props` and `emits` properties (e.g., `class`, `style`, `v-on` listeners, etc.).
85+
`inheritAttrs` `false` にセットした場合属性の継承は無効化されますが、`inheritAttrs` の設定に関わらずコンポーネントの `$attrs` プロパティから、`props` `emits`といったコンポーネントのプロパティを除く全ての属性(例えば`class``style``v-on` といったものも)にアクセスすることができます。
8686

87-
Using our date-picker component example from the [previous section]('#attribute-inheritance), in the event we need to apply all non-prop attributes to the `input` element rather than the root `div` element, this can be accomplished by using the `v-bind` shortcut.
87+
[前節]('#属性の継承) で利用した date-picker のコンポーネント例を用いて、プロパティでない属性の全てを ルートの `div` 要素ではなく `input` 要素に適用する場合、`v-bind` を用いて簡略的に記述することも可能です。
8888

8989
```js{5}
9090
app.component('date-picker', {
@@ -97,7 +97,7 @@ app.component('date-picker', {
9797
})
9898
```
9999

100-
With this new configuration, our `data-status` attribute will be applied to our `input` element!
100+
このように記述することで、`data-status` 属性は、 `input` 要素に適用されるようになります。
101101

102102
```html
103103
<!-- Date-picker component with a non-prop attribute -->
@@ -109,16 +109,16 @@ With this new configuration, our `data-status` attribute will be applied to our
109109
</div>
110110
```
111111

112-
## Attribute Inheritance on Multiple Root Nodes
112+
## ルート要素が複数の場合の属性の継承
113113

114-
Unlike single root node components, components with multiple root nodes do not have an automatic attribute fallthrough behavior. If `$attrs` are not bound explicitly, a runtime warning will be issued.
114+
コンポーネントのルート要素が一つでなく複数のルート要素からなる場合には、暗黙の属性の継承は行われません。`$attrs` を用いた明示的なアサインを行わない場合、ランタイム上で warning が発行されます。
115115

116116
```html
117117
<custom-layout id="custom-layout" @click="changeValue"></custom-layout>
118118
```
119119

120120
```js
121-
// This will raise a warning
121+
// これは warning を発行します
122122
app.component('custom-layout', {
123123
template: `
124124
<header>...</header>
@@ -127,7 +127,7 @@ app.component('custom-layout', {
127127
`
128128
})
129129

130-
// No warnings, $attrs are passed to <main> element
130+
// <main> 要素に $attrs で属性を渡しているため、 warnings は発行されません
131131
app.component('custom-layout', {
132132
template: `
133133
<header>...</header>

0 commit comments

Comments
 (0)