[Part 1 ] Vue.js 的精随-元件

前言

接下来多篇的元件介绍会以官方文件 Components In-Depth 章节为主:
未知part数的概念 /images/emoticon/emoticon04.gif

包含:

  • 元件命名
  • Props 使用
  • 自订事件
  • Slots
  • Provide/ inject
  • ...等

元件命名

前一篇:元件基本使用 已提到 globallocal 两种注册方式,下面则介绍元件命名方式

kebab-case-连字号

ex:

// - 区隔单字;HTML 中以 <my-component-name> 使用
app.component('my-component-name', {
  /* ... */
})

PascalCase-大驼峰

ex:

// HTML 中以 <my-component-name> 或 <MyComponentName> 使用
app.component('MyComponentName', {
  /* ... */
})

HTML标签解析时,无区分大小写,故使用 kebab-case 较安全!

建议全都小写并以使用 hyphen (-) 分隔单字


模组化

如果专案架构是采取 import/require 的方式,官方建议建立一个 components 资料夹,使每一个元件都独立成一个档案,并且在注册元件前,记得先 import 需要的元件进来。

ex:

// 档案 ComponentB.js 或是 ComponentB.vue 的内容
import ComponentA from './ComponentA'
import ComponentC from './ComponentC'

export default {
  components: {
    ComponentA,
    ComponentC
  }
  // ...
} 

ComponentB 中即可以使用 ComponentAComponentC!


单向资料流

子元件需要自定义的属性,并於父元件使用子元件时,传入资料。

ex:

// Button.vue 档案
<template>
  <button>{{title}}</button>
</template>

<script>
 export default{
  props: ['title']
 }
</script>

传递资料到 Props

<template>
  <div id="app">
    <custom-button title="Like"></custom-button>
    <custom-button title="Dislike"></custom-button>
  </div>
</template>

<script>
 import Button from './components/Button.vue'

 export default{
    components:{
        'custom-button': Button
    }
  }
</script>

当父元件属性改变时,它会将资料往下传递到子元件,防止子元件去异动到父元件的状态!
父元件被更新时,所有子元件用到的 props 会被更新为最新的值。

不应该在子元件中擅自去更改 props

记得: 每一个元件都应该有属於自己的状态,自己的状态自己改
摘自 重新认识 Vue.js


下篇预告

  • 元件续
    • Props

每日一句:
周休二日不嫌少;周休四日恰恰好 /images/emoticon/emoticon02.gif


<<:  奇数金字塔,你想得出来最佳解答吗?Ruby 30 天刷题修行篇第七话

>>:  PHP 关於 autoload

从零开始的8-bit迷宫探险【Level 23】长老,这个水晶值多少钱?

「喂?」山姆拿起对讲机,试着联络村子里的长老。 「我在这座黑森林里,找到很多水晶,这样不知道可以卖...

Day30 - 铁人赛总回顾

没想到居然从第一天慢慢坚持到最後一天了! 这三十天中,我们快速学习了Java的语法,包含基本型态、型...

证书签名请求 (CSR)

您应该生成公钥和私钥的密钥对,并将私钥保密。CSR 包含有关主题的信息、公钥、由私钥签名以避免欺骗 ...

D23. 学习基础C、C++语言

D23. C++介绍 C++是一种被广泛使用的电脑程序设计语言。它是一种通用程序设计语言,支援多重程...

今天学会了env虚拟环境

今天看影片学会了env虚拟环境 突然觉得环境设定好轻松 不用在顾虑什麽版本 你要什麽版本就弄什麽版本...