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

資訊專欄INFORMATION COLUMN

vue入門筆記體系(六)vue組件

Neilyo / 599人閱讀

摘要:更推薦用和實現(xiàn)父子組件通信創(chuàng)建實例此時打印出組件繼承使用基礎(chǔ)構(gòu)造器,創(chuàng)建一個子類。包含組件選項的對象創(chuàng)建構(gòu)造器創(chuàng)建實例,并掛載到一個元素上。該對象包含可注入其子孫的屬性。和綁定并不是可響應(yīng)的。

組件注冊

關(guān)于組件名:

*組件名可以是kebab-case (短橫線分隔命名)或者PascalCase (駝峰式命名)
當(dāng)使用 kebab-case (短橫線分隔命名) 定義一個組件時,你也必須在引用這個自定義元素時使用 kebab-case
當(dāng)使用 PascalCase (駝峰式命名) 定義一個組件時,你在引用這個自定義元素時兩種命名法都可以使用。*

全局注冊
//在注冊之后可以用在任何新創(chuàng)建的 Vue 根實例 (new Vue) 的模板中
Vue.component("my-component-name", {
  // ... 選項 ...
})
局部注冊
const component = {
    template: `
    
`, data() { return { text: 123 } }, methods:{ } } const app = new Vue({ //el:"#root", components: { comp: component }, template: "", }).$mount("#root")
模板的要求

注意:組件的模板只能有一個根元素。下面的情況是不允許的。

template: `
這是一個局部的自定義組件,只能在當(dāng)前Vue實例中使用
`,
組件中的data必須是函數(shù)

當(dāng)我們定義這個 組件時,你可能會發(fā)現(xiàn)它的 data 并不是像這樣直接提供一個對象:

data: {
  count: 0
}

取而代之的是,一個組件的 data 選項必須是一個函數(shù),因此每個實例可以維護一份被返回對象的獨立的拷貝:

data: function () {
  return {
    count: 0
  }
}

如果 Vue 沒有這條規(guī)則,所有模板都會共享一份數(shù)據(jù)。

解析 DOM 模板時的注意事項

有些 HTML 元素,諸如

      、 和

      這個自定義組件 會被作為無效的內(nèi)容提升到外部,并導(dǎo)致最終渲染結(jié)果出錯。幸好這個特殊的 is 特性給了我們一個變通的辦法:

      需要注意的是如果我們從以下來源使用模板的話,這條限制是不存在的:

      字符串 (例如:template: "...")
      單文件組件 (.vue)
      插槽 插槽內(nèi)容

      const component = {
        template: `
          
      //vue的默認(rèn)組件,放置插槽的地方
      `, data () { return { style: { width: "200px", height: "200px", border: "1px solid #aaa" }, value: "component value" } } } new Vue({ components: { CompOne: component }, el: "#root", data () { return { value: "123" } }, mounted () { }, template: `
      this is contne //傳遞插槽內(nèi)容
      ` })
      具名插槽

      有些時候我們需要多個插槽,可以進行命名;

      import Vue from "vue"
      
      const component = {
        template: `
          
      //進行插槽命名
      `, data () { return { style: { width: "200px", height: "200px", border: "1px solid #aaa" }, value: "component value" } } } new Vue({ components: { CompOne: component }, el: "#root", data () { return { value: "123" } }, mounted () { }, template: `
      this is header ///向指定的內(nèi)容 this is body
      ` })
      插槽的默認(rèn)內(nèi)容

      可以在 標(biāo)簽內(nèi)部指定默認(rèn)的內(nèi)容來做到這一點。

      如果父組件為這個插槽提供了內(nèi)容,則默認(rèn)的內(nèi)容會被替換掉。

      作用域插槽
      import Vue from "vue"
      
      const component = {
        template: `
          
      //向外傳遞的數(shù)據(jù)
      `, data () { return { style: { width: "200px", height: "200px", border: "1px solid #aaa" }, value: "component value" } } } new Vue({ components: { CompOne: component }, el: "#root", data () { return { value: "123" } }, mounted () { console.log(this.$refs.comp.value, this.$refs.span) //打印出組件實例和HTML標(biāo)簽 }, template: `
      {{value}} //此時沒有作用域,訪問到的不是組件內(nèi)的value,而是外部的value //添加作用域,組件內(nèi)部傳遞的數(shù)據(jù)都保存在props對象中 {{props.value}}
      ` })
      動態(tài)組件
      
      
      
          
          
          
          Document
      
      
          
      provide / inject 跨級組件通信

      這對選項需要一起使用,以允許一個祖先組件向其所有子孫后代注入一個依賴,不論組件層次有多深,并在起上下游關(guān)系成立的時間里始終生效。

      import Vue from "vue"
      
      const ChildComponent = {
        template: "
      child component:
      ", inject: ["yeye","value"], mounted () { console.log(this.$parent.$options.name) //上一級 console.log(this.yeye,this.value) //上上一級,接受到的數(shù)據(jù),打印出上上一級的vue實例和123 } } const component = { name: "comp", components: { ChildComponent }, template: `
      `, data () { return { style: { width: "200px", height: "200px", border: "1px solid #aaa" }, value: "component value", value2: "component222 value" } } } new Vue({ components: { CompOne: component }, provide () { //和data一樣,可以調(diào)用相應(yīng)的值,是一個對象或返回一個對象的函數(shù)。該對象包含可注入其子孫的屬性。 return { yeye: this, value:this.value } }, el: "#root", data () { return { value: "123" } }, mounted () { console.log(this.$refs.comp.value2, this.$refs.span) }, template: `
      {{props.value}}
      ` })

      provide 和 inject 綁定并不是可響應(yīng)的。這是刻意為之的。provide 和 inject 綁定并不是可響應(yīng)的。這是刻意為之的。

      import Vue from "vue"
      
      const ChildComponent = {
        template: "
      child component:{{data.value}}
      ", inject: ["yeye","data"], mounted () { console.log(this.$parent.$options.name) //上一級 console.log(this.yeye,this.value) //上一級 } } const component = { name: "comp", components: { ChildComponent }, // template: ` //
      //
      // //
      //
      // //
      //
      // `, template: `
      `, data () { return { style: { width: "200px", height: "200px", border: "1px solid #aaa" }, value: "component value", value2: "component222 value" } } } new Vue({ components: { CompOne: component }, provide () { //和data一樣,可以調(diào)用相應(yīng)的值 const data = {} // es5雙向綁定實現(xiàn)原理 Object.defineProperty(data, "value", { get: () => this.value, //獲取最新value,每次調(diào)用value相當(dāng)于get()方法 enumerable: true //可讀取 }) return { yeye: this, // value:this.value data } }, el: "#root", data () { return { value: "123" } }, mounted () { console.log(this.$refs.comp.value2, this.$refs.span) }, template: `
      {{props.value}}
      ` })

      provide 和 inject 主要為高階插件/組件庫提供用例。并不推薦直接用于應(yīng)用程序代碼中。

      渲染函數(shù) & JSX

      參考:渲染函數(shù)&JSX

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

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

相關(guān)文章

  • vue入門筆記體系vue組件

    摘要:更推薦用和實現(xiàn)父子組件通信創(chuàng)建實例此時打印出組件繼承使用基礎(chǔ)構(gòu)造器,創(chuàng)建一個子類。包含組件選項的對象創(chuàng)建構(gòu)造器創(chuàng)建實例,并掛載到一個元素上。該對象包含可注入其子孫的屬性。和綁定并不是可響應(yīng)的。 組件注冊 關(guān)于組件名: *組件名可以是kebab-case (短橫線分隔命名)或者PascalCase (駝峰式命名) 當(dāng)使用 kebab-case (短橫線分隔命名) 定義一個組件時,你也必...

    niuxiaowei111 評論0 收藏0
  • Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師(全網(wǎng)最強)

    摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進步歡迎點贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...

    Scorpion 評論0 收藏0
  • vue入門筆記體系(一)vue實例

    摘要:就是實例中的對象當(dāng)前組件接收到的對象。當(dāng)前組件數(shù)的根實例如果當(dāng)前實例沒有父實例,此實例將會是其自己當(dāng)前實例的直接子組件。 vue實例 每個 Vue 應(yīng)用都是通過用 Vue 函數(shù)創(chuàng)建一個新的 Vue 實例開始的: var vm = new Vue({ // 選項 }) 當(dāng)創(chuàng)建一個 Vue 實例時,你可以傳入一個選項對象。作為參考,你也可以在 api/#選項-數(shù)據(jù) 文檔 中瀏覽完整的選...

    microelec 評論0 收藏0
  • vue入門筆記體系(二)vue生命周期

    摘要:此時還未有選項鉤子函數(shù)和間的生命周期完成后,會有一個判斷過程,判斷對象是否有選項。鉤子函數(shù)和鉤子函數(shù)間的生命周期當(dāng)發(fā)現(xiàn)中的數(shù)據(jù)發(fā)生了改變,會觸發(fā)對應(yīng)組件的重新渲染,先后調(diào)用和鉤子函數(shù)。和鉤子函數(shù)間的生命周期鉤子函數(shù)在實例銷毀之前調(diào)用。 vue生命周期 這是vue生命周期的圖示具體內(nèi)容:showImg(https://segmentfault.com/img/bV4xju?w=1200&...

    scola666 評論0 收藏0
  • vue入門筆記體系(五)vue指令

    摘要:指令指令帶有前綴,以表示它們是提供的特殊特性。添加事件偵聽器時使用模式。只當(dāng)事件是從偵聽器綁定的元素本身觸發(fā)時才觸發(fā)回調(diào)。差別在哪里將特性名轉(zhuǎn)換為從開始支持語法糖,會擴展成一個更新父組件綁定值的偵聽器。 vue指令 指令帶有前綴 v-,以表示它們是 Vue 提供的特殊特性。 v-text {{msg}} v-html //渲染HTML文本,更新元素的 innerHTML 。注意:內(nèi)...

    myshell 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<