国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Vue初步了解組件——父子組件

Bowman_han / 1219人閱讀

摘要:父組件的數(shù)據(jù)需要通過(guò)才能下發(fā)到子組件中。這是為了防止子組件無(wú)意間修改了父組件的狀態(tài),來(lái)避免應(yīng)用的數(shù)據(jù)流變得難以理解。另外,每次父組件更新時(shí),子組件的所有都會(huì)更新為最新值。

組件 什么是組件?

組件 (Component) 是 Vue.js 最強(qiáng)大的功能之一。組件可以擴(kuò)展 HTML 元素,封裝可重用的代碼。在較高層面上,組件是自定義元素,Vue.js 的編譯器為它添加特殊功能。在有些情況下,組件也可以表現(xiàn)為用 is 特性進(jìn)行了擴(kuò)展的原生 HTML 元素。
也可分為:

有結(jié)構(gòu)HTML

有樣式CSS

有交互(效果)

行為

信號(hào)量存數(shù)據(jù)

系統(tǒng)組件

組件的行為可以定制?通過(guò)屬性設(shè)置

在Vue中有什么樣的組件(組件進(jìn)行分類):
實(shí)現(xiàn)基本功能的基礎(chǔ)的組件(最小的元素)
可復(fù)用的邏輯組件(業(yè)務(wù)組件)
頁(yè)面組件

頁(yè)面上所有的東西全都是組件:形成了組件樹

局部注冊(cè)--自定義組件

你不必把每個(gè)組件都注冊(cè)到全局。你可以通過(guò)某個(gè) Vue 實(shí)例/組件的實(shí)例選項(xiàng) components 注冊(cè)僅在其作用域中可用的組件:

//在html中是使用

var Child = {
  template: "
A custom component!
" } var vm = new Vue({ el: "#app", components: { // Child 將只在父組件模板中可用 Child } })

這種封裝也適用于其它可注冊(cè)的 Vue 功能,比如指令。

組件樹

頁(yè)面上所有的東西全都是組件:形成了組件樹

// 頭部組件
var AppHead = {
    template: `
app head
` }; // 主窗口單元組件 var AppMainUnit = { template: `
app main unit
` } // 主窗口組件 var AppMain = { template: `
app main
`, components: { AppMainUnit } } // 側(cè)邊欄單元組件 var AppSideUnit = { template: `
app side unit
` } // 側(cè)邊欄組件 var AppSide = { template: `
app side
`, comp onents: { AppSideUnit } } // 根組件 var vm = new Vue({ el: "#app", components: { AppHead, AppMain, AppSide } })
組件data

子組件與根組件的data用法不同

根組件data:

var vm = new Vue({
    el: "#app",
    data: {
        msg: ""
    },
    components: {
        MyLi
    }
})

{{msg}}
調(diào)用其中的msg

子組件data:

var MyLi = {
//那么 Vue 會(huì)停止運(yùn)行,并在控制臺(tái)發(fā)出警告,告訴你在組件實(shí)例中 data 必須是一個(gè)函數(shù)。
    data() {
        console.log(1);
        return {
            counter: 0
        }
    },
    template: ``
}
//根組件
var vm = new Vue({
    el: "#app",
    data: {
        msg: "123"
    },
    components: {
        MyLi
    }
})




輸出結(jié)果:0 0 0
props聲明

組件實(shí)例的作用域是孤立的。這意味著不能 (也不應(yīng)該) 在子組件的模板內(nèi)直接引用父組件的數(shù)據(jù)。父組件的數(shù)據(jù)需要通過(guò) prop 才能下發(fā)到子組件中。

var Child = {
    template: `{{message}}{{myMessage}}`,
//聲明當(dāng)前組件內(nèi)部能夠接受一個(gè)message的屬性,如果是駝峰式命名,在傳遞參數(shù)時(shí)使用小寫,
    props: ["message","myMessage"]
}
var vm = new Vue({
    el: "#app",
    data: {
        parentMessage:"h"
    },
    components: {
        Child
    }
})

在html中使用:

//父組件賦值到子組件

//實(shí)時(shí)同步的pareMessage值
props--作為組件內(nèi)部的初始狀態(tài)

Prop 是單向綁定的:當(dāng)父組件的屬性變化時(shí),將傳導(dǎo)給子組件,但是反過(guò)來(lái)不會(huì)。這是為了防止子組件無(wú)意間修改了父組件的狀態(tài),來(lái)避免應(yīng)用的數(shù)據(jù)流變得難以理解。
另外,每次父組件更新時(shí),子組件的所有 prop 都會(huì)更新為最新值。這意味著你不應(yīng)該在子組件內(nèi)部改變 prop。如果你這么做了,Vue 會(huì)在控制臺(tái)給出警告。
在兩種情況下,我們很容易忍不住想去修改 prop 中數(shù)據(jù):

Prop 作為初始值傳入后,子組件想把它當(dāng)作局部數(shù)據(jù)來(lái)用;

Prop 作為原始數(shù)據(jù)傳入,由子組件處理成其它數(shù)據(jù)輸出。

var Child = {
    template: `
{{initCounter}} {{childCounter}}
`, props:["initCounter"], data(){ //保存初始值到childCounter并返回,發(fā)生變化的是當(dāng)前的childCounter的值 return {childCounter: this.initCounter} } } var vm = new Vue({ el: "#app", data: { counter: 0 }, components:{ Child } }) 在html中調(diào)用:
props的計(jì)算后屬性

注意在 JavaScript 中對(duì)象和數(shù)組是引用類型,指向同一個(gè)內(nèi)存空間,如果 prop 是一個(gè)對(duì)象或數(shù)組,在子組件內(nèi)部改變它會(huì)影響父組件的狀態(tài)。

var Child = {
    template: `
{{size}} {{normalSize}}
`, props: ["size"], computed: { normalSize(){ return this.size.trim().toLowerCase(); } } } var vm = new Vue({ el: "#app", data:{ parentSize: " THREE" }, components:{ Child } }) 在html中調(diào)用:
props--驗(yàn)證

我們可以為組件的 prop 指定驗(yàn)證規(guī)則。如果傳入的數(shù)據(jù)不符合要求,Vue 會(huì)發(fā)出警告。這對(duì)于開發(fā)給他人使用的組件非常有用。

要指定驗(yàn)證規(guī)則,需要用對(duì)象的形式來(lái)定義 prop,而不能用字符串?dāng)?shù)組:

var Child = {
    template: `
{{pa}} {{pb}} {{pc}} {{pd}} {{pe}} {{pf}}
`, props: { pa: Number, pb: [String, Number], pc: { type: Number, required: true//必填 }, pd: { type: Number, default: 100//默認(rèn)值 }, pe: { type: Object, default: function(){ return { hello : "world" } } }, pf: { type: Number, validator: function(v){ return v > 100 }//自定義屬性判斷 } } } var vm = new Vue({ el: "#app", data:{ pa: 2, pb: "abc", pc: 2, pd: 50, pe: {}, pf: 120 }, components:{ Child } }) 在html中使用:
type 可以是下面原生構(gòu)造器:

String

Number

Boolean

Function

Object

Array

Symbol

type 也可以是一個(gè)自定義構(gòu)造器函數(shù),使用 instanceof 檢測(cè)。
當(dāng) prop 驗(yàn)證失敗,Vue 會(huì)拋出警告 (如果使用的是開發(fā)版本)。注意 prop 會(huì)在組件實(shí)例創(chuàng)建之前進(jìn)行校驗(yàn),所以在 default 或 validator 函數(shù)里,諸如 data、computed 或 methods 等實(shí)例屬性還無(wú)法使用。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/51505.html

相關(guān)文章

  • 關(guān)于vue、vuex的一些初步小結(jié)

    摘要:只能是同步函數(shù),原因是無(wú)法捕捉異步函數(shù)的快照。除了這三個(gè)概念外,還有類比計(jì)算屬性,用于從派生出一些值分割較大的狀態(tài)樹,便于管理。處理表單可手動(dòng)監(jiān)聽或是使用帶的雙向綁定計(jì)算屬性。 一、Vue組件的創(chuàng)建 一般語(yǔ)法: Vue.component(tagName, options) 務(wù)必在根組件實(shí)例化之前注冊(cè)組件 組件options說(shuō)明: data: 必須是一個(gè)函數(shù),目的在于返回獨(dú)立的對(duì)象...

    joywek 評(píng)論0 收藏0
  • Vue 組件間通信方式

    摘要:本身提供哪幾種通信方式首先靈感源于,支持雙向綁定,本質(zhì)還是單向數(shù)據(jù)流。跟一樣,組件間最基本的數(shù)據(jù)流是通過(guò)向子組件傳遞數(shù)據(jù)。但是在卻很少使用,因?yàn)榻M件可以自定義事件,即后面的組件間通信方式其實(shí)就是訂閱發(fā)布模式。 例子是在 jsrun.net 平臺(tái)編寫,不支持移動(dòng)端平臺(tái),所以本文建議在 PC 端進(jìn)行閱讀。 Vue 是數(shù)據(jù)驅(qū)動(dòng)的視圖框架,那么組件間的數(shù)據(jù)通信是必然的事情,那么組件間如何進(jìn)行數(shù)...

    hss01248 評(píng)論0 收藏0
  • vue -- 非父子組件傳值,事件總線(eventbus)的使用方式

    摘要:我的個(gè)人博客地址資源地址非父子組件傳值,事件總線的使用方式我的博客地址如果您對(duì)我的博客內(nèi)容有疑惑或質(zhì)疑的地方,請(qǐng)?jiān)谙路皆u(píng)論區(qū)留言,或郵件給我,共同學(xué)習(xí)進(jìn)步。 歡迎訪問(wèn)我的個(gè)人博客:http://www.xiaolongwu.cn 前言 先說(shuō)一下什么是事件總線,其實(shí)就是訂閱發(fā)布者模式; 比如有一個(gè)bus對(duì)象,這個(gè)對(duì)象上有兩個(gè)方法,一個(gè)是on(監(jiān)聽,也就是訂閱),一個(gè)是emit(觸發(fā),也就...

    zone 評(píng)論0 收藏0
  • Vue父子組件通信的三兩事(prop、emit)

    摘要:的單向數(shù)據(jù)傳遞直接作為一個(gè)本地變量下面是我的子組件這是父組件給我傳的數(shù)據(jù)運(yùn)行結(jié)果如下圖子組件向父組件傳遞數(shù)據(jù)基本使用子組件向父組件傳遞數(shù)據(jù),不能像上面一樣實(shí)時(shí)的傳遞數(shù)據(jù),必須通過(guò)事件觸發(fā)。 組件是Vue核心功能之一,合理的組件化,可以減少我們代碼的冗余,提高項(xiàng)目的可維護(hù)性。下面,我將由淺入深的講Vue的組件在講之前,首先我們先了解一下組件的命名。 HTML是對(duì)特征名不敏感的語(yǔ)言,他...

    darcrand 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<