vue 組件+路由+自定義指令

局部組件 Vue里
全局組件 Vue外

Vue.component(tagName, options)
tagName為組件名,options 模板
<tagName></tagName>

props 傳遞組件參數(shù)

<div id="app">
    <div>
      <input v-model="parentMsg">
      <br>
      <child v-bind:message="parentMsg"></child>
    </div>
</div>
<script>
// 注冊(cè)
Vue.component('child', {
  // 聲明 props
  props: ['message'],
  // 同樣也可以在 vm 實(shí)例中像 "this.message" 這樣使用
  template: '<span>{{ message }}</span>'
})
// 創(chuàng)建根實(shí)例
new Vue({
  el: '#app',
  data: {
    parentMsg: '父組件內(nèi)容'
  }
})
</script>

props參數(shù)驗(yàn)證

Vue.component('example', {
  props: {
    // 基礎(chǔ)類型檢測(cè) (`null` 意思是任何類型都可以)
    propA: Number,
    // 多種類型
    propB: [String, Number],
    // 必傳且是字符串
    propC: {
      type: String,
      required: true
    },
    // 數(shù)字,有默認(rèn)值
    propD: {
      type: Number,
      default: 100
    },
    // 數(shù)組/對(duì)象的默認(rèn)值應(yīng)當(dāng)由一個(gè)工廠函數(shù)返回
    propE: {
      type: Object,
      default: function () {
        return { message: 'hello' }
      }
    },
    // 自定義驗(yàn)證函數(shù)
    propF: {
      validator: function (value) {
        return value > 10
      }
    }
  }
})

使用 on(eventName) 監(jiān)聽事件 使用emit(eventName) 觸發(fā)事件

注冊(cè)指令 (便于寫框架)

<div id="app">
    <p>頁面載入時(shí),input 元素自動(dòng)獲取焦點(diǎn):</p>
    <input v-focus>
</div>
 
<script>
// 注冊(cè)一個(gè)全局自定義指令 v-focus
Vue.directive('focus', {
  // 當(dāng)綁定元素插入到 DOM 中。
  inserted: function (el) {
    // 聚焦元素
    el.focus()
  }
})
// 創(chuàng)建根實(shí)例
new Vue({
  el: '#app'
})
</script>
鉤子函數(shù)
  • bind: 只調(diào)用一次,指令第一次綁定到元素時(shí)調(diào)用,用這個(gè)鉤子函數(shù)可以定義一個(gè)在綁定時(shí)執(zhí)行一次的初始化動(dòng)作。
  • inserted: 被綁定元素插入父節(jié)點(diǎn)時(shí)調(diào)用(父節(jié)點(diǎn)存在即可調(diào)用,不必存在于 document 中)。
  • update: 被綁定元素所在的模板更新時(shí)調(diào)用,而不論綁定值是否變化。通過比較更新前后的綁定值,可以忽略不必要的模板更新(詳細(xì)的鉤子函數(shù)參數(shù)見下)。
  • componentUpdated: 被綁定元素所在模板完成一次更新周期時(shí)調(diào)用。
  • unbind: 只調(diào)用一次, 指令與元素解綁時(shí)調(diào)用。

參考鏈接
https://www.runoob.com/vue2/vue-custom-directive.html

router-link
切換頁面
流程

//1. 定義(路由)組件。
const Foo = { template: '<div>foo</div>' }
// 2. 定義路由
const routes = [
  { path: '/foo', component: Foo }
]
// 3. 創(chuàng)建 router 實(shí)例,然后傳 `routes` 配置
const router = new VueRouter({
  routes // (縮寫)相當(dāng)于 routes: routes
})
// 4. 創(chuàng)建和掛載根實(shí)例。
const app = new Vue({
  router
}).$mount('#app')

動(dòng)畫用到時(shí)看
https://www.runoob.com/vue2/vue-transitions.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容