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>
// 注冊
Vue.component('child', {
  // 聲明 props
  props: ['message'],
  // 同樣也可以在 vm 實例中像 "this.message" 這樣使用
  template: '<span>{{ message }}</span>'
})
// 創(chuàng)建根實例
new Vue({
  el: '#app',
  data: {
    parentMsg: '父組件內(nèi)容'
  }
})
</script>

props參數(shù)驗證

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

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

注冊指令 (便于寫框架)

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

動畫用到時看
https://www.runoob.com/vue2/vue-transitions.html

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

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