前端开发那些事儿

Vue 构造选项

2020-05-12  本文已影响0人  fanison

Vue 构造选项

Options

数据: data、props、methods、computed、watch

DOM:el、 template、render、renderError

生命周期钩子: created、mounted、updated、destroyed、beforeCreate、beforeMount、beforeUpdate、beforeDestroy、activated、deactivated、errorCaptured

资源:directives、components、filters

组合:mixins、extends、provide、inject、parent

其他

el挂载点

new Vue({
  render:h=>h(App)
}).$mount('#app');

new Vue({
  el:'#app',
  render:h=>h(App)
});

data 内部数据

函数
new Vue({   
  //data: function(){}
  data(){    
    return {
       n:0
    }
  }
})

对象
new Vue({    
  data:{ n:0 }
})

methods 方法

<div>
  {{n}}
  <button @click="add">+1</button>
  {{filter()}}  
    // {{filter(array)}}
    // {{array.filter(i => i%2 === 0)}}  js数组filter方法
</div>

new Vue{
  data(){
    return{
      n:0,
      array:[1,2,3,4,5,6]
    },
  },
  methods:{
    add(){ 
      this.n += 1
    },
    filter(){
      return this.array.filter( i => i%2 === 0)
    }
    // filter(array){ array.filter( i => i%2 === 0) }
  }
}

components

import Demo from './Demo.vue'
new Vue({
  components:{ Demo }  //{Demo:Demo}
})
<div>
  <Demo/>
</div>


Vue.component('Demo2',{
  template:`
    <div>demo2</div>
  `
})
<div>
  <Demo2/>
</div>


new Vue({
  components:{ 
     Demo3:{
       template: `<div>demo3</div>`
     }
  }
})
<div>
  <Demo3/>
</div>

Prop 外部数据

Vue.component('Demo', {
  props: ['message','fn'],
  template:'
    {{ message }}
    <button @click="fn">call fn</button>
  '
})

new Vue({
  data:{
    n: 0
  },
  template:`
    <div>
      <Demo message="hello"/>
      <Demo :message="n" :fn="add"/>
    </div>
  `,
  methods:{
    add(){ this.n += 1 }
  }
})

Destroyed

 import Demo from './Demo.vue'  
 new Vue({
   components:{ Demo },  
   data:{ visible = true },
   template:`
    <div>
      <button @click="toggle">toggle</button>
      <hr>
      <Demo v-if="visible === true"/>
    </div>
   `,
   methods:{
      toggle(){
        this.visible = !this.visible 
      }
   }
 }).$mount('#app')
上一篇 下一篇

猜你喜欢

热点阅读