Skip to content

Commit 3ca8dca

Browse files
committed
fix componetns.md
1 parent 091c03c commit 3ca8dca

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

src/guide/components.md

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Vue.component('my-component', {
2929
})
3030
```
3131

32-
<p class="tip">对于自定义标签名字,Vue.js 不强制要求遵循 W3C 规则(小写,并且包含一个短杠),尽管遵循这个规则比较好。</p>
32+
<p class="tip">对于自定义标签名字,Vue.js 不强制要求遵循 [W3C规则](https://www.w3.org/TR/custom-elements/#concepts) (小写,并且包含一个短杠),尽管遵循这个规则比较好。</p>
3333

3434
组件在注册之后,便可以在父实例的模块中以自定义元素 `<my-component></my-component>` 的形式使用。要确保在初始化根实例 **之前** 注册了组件:
3535

@@ -228,16 +228,16 @@ new Vue({
228228

229229
### 使用Props传递数据
230230

231-
**组件实例的作用域是孤立的**。这意味着不能并且不应该在子组件的模板内直接引用父组件的数据。可以使用 props 把数据传给子组件。
231+
组件实例的作用域是**孤立的**。这意味着不能并且不应该在子组件的模板内直接引用父组件的数据。可以使用 props 把数据传给子组件。
232232

233-
prop 是父组件用来传递消息的一个自定义属性。子组件需要显式地用 [`props` 选项](/api/#props) 声明 props
233+
每个“prop”是期望从父组件传下来信息的一个自定义字段。子组件需要显式地用 [`props` 选项](/api/#props) 声明这些“prop”
234234

235235
``` js
236236
Vue.component('child', {
237237
// 声明 props
238238
props: ['message'],
239239
// 就像data一样, prop 也可以用在模板内
240-
// and is also made available in the vm as this.message
240+
// 同样也可以在vm实例中像 “this.message” 这样使用
241241
template: '<span>{{ message }}</span>'
242242
})
243243
```
@@ -288,7 +288,7 @@ Vue.component('child', {
288288

289289
### 动态 Props
290290

291-
类似于用 `v-bind` 绑定 HTML 特性到一个表达式,也可以用 `v-bind` 绑定动态 Props 到父组件的数据。每当父组件的数据变化时,也会传导给子组件:
291+
类似于用 `v-bind` 绑定 HTML 特性到一个表达式,也可以用 `v-bind` 绑定动态 props 到父组件的数据。每当父组件的数据变化时,也会传导给子组件:
292292

293293
``` html
294294
<div>
@@ -333,7 +333,7 @@ new Vue({
333333
初学者常犯的一个错误是使用字面量语法传递数值:
334334

335335
``` html
336-
<!-- 传递一个字符串"1" -->
336+
<!-- 传递了一个字符串"1" -->
337337
<comp some-prop="1"></comp>
338338
```
339339

@@ -346,9 +346,9 @@ new Vue({
346346

347347
### 单向数据流
348348

349-
prop是单向绑定:当父组件的属性变化时,将传导给子组件,但是反过来不会。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解.
349+
prop是单向绑定:当父组件的属性变化时将传导给子组件但是反过来不会。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解.
350350

351-
另外,每次父组件更新时,子组件的所有prop都会更新为最新值。这意味着你不应该在子组件内部改变prop。如果你这么做了,Vue会在控制台给出警告。
351+
另外每次父组件更新时,子组件的所有 prop 都会更新为最新值。这意味着你****应该在子组件内部改变 prop 。如果你这么做了,Vue会在控制台给出警告。
352352

353353
通常有两种改变 prop 的情况:
354354

@@ -362,18 +362,18 @@ prop是单向绑定:当父组件的属性变化时,将传导给子组件,但
362362

363363
2. 定义一个基于 prop 值的计算属性。
364364

365-
<p class="tip">注意在JavaScript中对象和数组是通过引用传递的,如果prop是一个对象或数组,在子组件内部改变它**会**影响父组件的状态。</p>
365+
<p class="tip">注意在JavaScript中对象和数组是通过引用传递的如果prop是一个对象或数组在子组件内部改变它**会**影响父组件的状态。</p>
366366

367367
### Prop 验证
368368

369-
组件可以为 props 指定验证要求。如果未指定要求,Vue会发出警告。当组件给其他人使用时这很有用。
369+
组件可以为 props 指定验证要求。如果未指定要求Vue会发出警告。当组件给其他人使用时这很有用。
370370

371-
prop 是一个对象而不是字符串数组时,它包含验证要求:
371+
prop 是一个对象而不是字符串数组时它包含验证要求:
372372

373373
``` js
374374
Vue.component('example', {
375375
props: {
376-
// 基础类型检测 (`null` 意思是任何类型都可以)
376+
// 基础类型检测 `null` 意思是任何类型都可以
377377
propA: Number,
378378
// 多种类型
379379
propB: [String, Number],
@@ -504,7 +504,7 @@ new Vue({
504504
</script>
505505
{% endraw %}
506506

507-
在本例中,子组件仍然和它外部完全解耦合了。它所做的只是将父组件可能会关心的发生在它内部的事情告知给父组件了
507+
在本例中,子组件已经和它外部完全解耦了。它所做的只是触发一个父组件关心的内部事件
508508

509509
#### 给组件绑定原生事件
510510

@@ -516,7 +516,7 @@ new Vue({
516516

517517
### 使用自定义事件的表单输入组件
518518

519-
也可以用 `v-model` 来创建自定义表单输入。记住:
519+
自定义事件也可以用来创建自定义的表单输入组件,使用 `v-model` 来进行数据双向绑定。记住,表单控件进行数据绑定时的语法
520520

521521
``` html
522522
<input v-model="something">
@@ -528,7 +528,7 @@ new Vue({
528528
<input v-bind:value="something" v-on:input="something = $event.target.value">
529529
```
530530

531-
在组件中使用时, 它相当于下面的简写:
531+
所以在组件中使用时, 它相当于下面的简写:
532532

533533
``` html
534534
<input v-bind:value="something" v-on:input="something = arguments[0]">
@@ -617,7 +617,7 @@ new Vue({
617617
</script>
618618
{% endraw %}
619619

620-
这个接口不仅仅可以用来联系组件内部的表单输入,也很容易集成你自己写的输入类型。想象一下:
620+
这个接口不仅仅可以用来连接组件内部的表单输入,也很容易集成你自己创造的输入类型。想象一下:
621621

622622
``` html
623623
<voice-recognizer v-model="question"></voice-recognizer>
@@ -633,11 +633,11 @@ new Vue({
633633
var bus = new Vue()
634634
```
635635
``` js
636-
// 组件A的方法
636+
// 在组件A的方法中发射事件
637637
bus.$emit('id-selected', 1)
638638
```
639639
``` js
640-
// 组件B创建的钩子
640+
// 在组件B的created钩子中监听事件
641641
bus.$on('id-selected', function (id) {
642642
// ...
643643
})
@@ -705,7 +705,7 @@ Vue.component('child-component', {
705705

706706
### 单个Slot
707707

708-
父组件的内容将被**抛弃**,除非子组件模板包含 `<slot>`。如果子组件模板只有一个没有特性的 slot,父组件的整个内容将插到 slot 所在的地方并替换它
708+
父组件的内容将被**抛弃**,除非子组件模板包含 `<slot>`。如果子组件模板只有一个没有特性的 slot,父组件的整个内容 fragment 将插到 slot 所在的 DOM 位置并替换掉 slot 标签
709709

710710
`<slot>` 标签的内容视为**回退内容**。回退内容在子组件的作用域内编译,当宿主元素为空并且没有内容供插入时显示这个回退内容。
711711

@@ -747,7 +747,7 @@ Vue.component('child-component', {
747747

748748
### 具名Slots
749749

750-
`<slot>` 元素可以用一个特殊特性, `name`,配置如何分发内容。多个 slot 可以有不同的名字。具名 slot 将匹配内容片段中有对应 `slot` 特性的元素。
750+
`<slot>` 元素可以用一个特殊特性 `name`配置如何分发内容。多个 slot 可以有不同的名字。具名 slot 将匹配内容片段中有对应 `slot` 特性的元素。
751751

752752
仍然可以有一个匿名 slot,它是**默认 slot** ,作为找不到匹配的内容片段的回退插槽。如果没有默认的 slot,这些找不到匹配的内容片段将被抛弃。
753753

@@ -938,7 +938,7 @@ Vue.component(
938938

939939
### 组件命名约定
940940

941-
当定义组件时(或者props),可以使用kebab-case, camelCase, 或 TitleCase。Vue不关心这个。
941+
当注册组件时(或者 props ),可以使用kebab-case, camelCase, 或 TitleCase。Vue不关心这个。
942942

943943
``` js
944944
// 在组件定义中
@@ -950,7 +950,7 @@ components: {
950950
}
951951
```
952952

953-
在HTML模版中,请使用 kebab-case形式:
953+
在HTML模版中请使用 kebab-case形式
954954

955955
``` html
956956
<!-- 在HTML模版中始终使用 kebab-case -->
@@ -962,19 +962,19 @@ components: {
962962
当使用字符串模式时,可以不受HTML的case-insensitive限制。这意味即使是在模版中,引用、组件和prop可以使用 camelCase、PascalCase、或者 kebab-case:
963963

964964
``` html
965-
<!-- 在字符串模版中用你想用! -->
965+
<!-- 在字符串模版中可以用任何你喜欢的方式! -->
966966
<my-component></my-component>
967967
<myComponent></myComponent>
968968
<MyComponent></MyComponent>
969969
```
970970

971-
如果组件未经 `slot` 元素传递内容,你甚至可以在组件名后使用 `/` 使其自闭和:
971+
如果组件未经 `slot` 元素传递内容你甚至可以在组件名后使用 `/` 使其自闭和:
972972

973973
``` html
974974
<my-component/>
975975
```
976976

977-
当然,这只在字符串模版中有效。因为自闭和的自定义元素是无效的HTML,浏览器原生的解析器也无法识别它。
977+
当然,这只在字符串模版中有效。因为自闭的自定义元素是无效的HTML,浏览器原生的解析器也无法识别它。
978978

979979
### 递归组件
980980

@@ -985,7 +985,7 @@ name: 'stack-overflow',
985985
template: '<div><stack-overflow></stack-overflow></div>'
986986
```
987987

988-
上面组件会导致一个错误 “max stack size exceeded”,所以要确保递归调用有终止条件 (也就是使用 `v-if` )。当使用 `Vue.component()` 全局注册一个组件时,组件 ID 自动设置为组件的 `name` 选项。
988+
上面组件会导致一个错误 “max stack size exceeded”,所以要确保递归调用有终止条件 (比如递归调用时使用 `v-if` 并让他最终返回false)。当使用 `Vue.component()` 全局注册一个组件时,全局的组件 ID 自动设置为该组件的 `name` 选项。
989989

990990
### 内联模版
991991

@@ -1002,7 +1002,7 @@ template: '<div><stack-overflow></stack-overflow></div>'
10021002

10031003
### X-Templates
10041004

1005-
另一种定义模版的方式是在javascript标签里使用 `text/x-template` 类型, 并且指定一个id。例如:
1005+
另一种定义模版的方式是在 JavaScript 标签里使用 `text/x-template` 类型, 并且指定一个id。例如:
10061006

10071007
``` html
10081008
<script type="text/x-template" id="hello-world-template">
@@ -1016,11 +1016,11 @@ Vue.component('hello-world', {
10161016
})
10171017
```
10181018

1019-
这在有很多模版或者小的应用中有用,否则应该避免使用,因为它将模版和组件的其他定义隔离了。
1019+
这在有很多模版或者小的应用中有用否则应该避免使用因为它将模版和组件的其他定义隔离了。
10201020

10211021
### Cheap Static Components with `v-once`
10221022

1023-
尽管在Vue中渲染HTML很快,不过当组件中包含**大量**静态内容时, 可以考虑使用 `v-once` 将渲染结果缓存起来, 就像这样:
1023+
尽管在Vue中渲染HTML很快不过当组件中包含**大量**静态内容时, 可以考虑使用 `v-once` 将渲染结果缓存起来, 就像这样:
10241024

10251025
``` js
10261026
Vue.component('terms-of-service', {

0 commit comments

Comments
 (0)