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

資訊專欄INFORMATION COLUMN

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

niuxiaowei111 / 3136人閱讀

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

組件注冊

關于組件名:

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

全局注冊
//在注冊之后可以用在任何新創建的 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: `
這是一個局部的自定義組件,只能在當前Vue實例中使用
`,
組件中的data必須是函數

當我們定義這個 組件時,你可能會發現它的 data 并不是像這樣直接提供一個對象:

data: {
  count: 0
}

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

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

如果 Vue 沒有這條規則,所有模板都會共享一份數據。

解析 DOM 模板時的注意事項

有些 HTML 元素,諸如

      、 和

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

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

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

      const component = {
        template: `
          
      //vue的默認組件,放置插槽的地方
      `, 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 //傳遞插槽內容
      ` })
      具名插槽

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

      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 ///向指定的內容 this is body
      ` })
      插槽的默認內容

      可以在 標簽內部指定默認的內容來做到這一點。

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

      作用域插槽
      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 () { console.log(this.$refs.comp.value, this.$refs.span) //打印出組件實例和HTML標簽 }, template: `
      {{value}} //此時沒有作用域,訪問到的不是組件內的value,而是外部的value //添加作用域,組件內部傳遞的數據都保存在props對象中 {{props.value}}
      ` })
      動態組件
      
      
      
          
          
          
          Document
      
      
          
      provide / inject 跨級組件通信

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

      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) //上上一級,接受到的數據,打印出上上一級的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一樣,可以調用相應的值,是一個對象或返回一個對象的函數。該對象包含可注入其子孫的屬性。 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 綁定并不是可響應的。這是刻意為之的。provide 和 inject 綁定并不是可響應的。這是刻意為之的。

      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一樣,可以調用相應的值 const data = {} // es5雙向綁定實現原理 Object.defineProperty(data, "value", { get: () => this.value, //獲取最新value,每次調用value相當于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 主要為高階插件/組件庫提供用例。并不推薦直接用于應用程序代碼中。

      渲染函數 & JSX

      參考:渲染函數&JSX

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96843.html

相關文章

  • vue入門筆記體系vue組件

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

    Neilyo 評論0 收藏0
  • Java學習路線總結,搬磚工逆襲Java架構師(全網最強)

    摘要:哪吒社區技能樹打卡打卡貼函數式接口簡介領域優質創作者哪吒公眾號作者架構師奮斗者掃描主頁左側二維碼,加入群聊,一起學習一起進步歡迎點贊收藏留言前情提要無意間聽到領導們的談話,現在公司的現狀是碼農太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區Java技能樹打卡?【打卡貼 day2...

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

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

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

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

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

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

    myshell 評論0 收藏0

發表評論

0條評論

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