Vue知识点总结

栏目: JavaScript · 发布时间: 4年前

  • 属性绑定: v-bind:props="hello" <=> :props="hello"
  • 事件绑定: v-on:click="handleFun" <=> @click="handleFn()" ()括号可省略
  • 数组遍历: v-for="(item,index) in List"
  • 条件渲染: v-if="true/false" v-else-if="true/false" v-else
  • 显示隐藏: v-show="true/false"
  • innerHTML: v-html=""
  • innerText: v-text="" <=> {{}}
  • 隐消{{}}: v-cloak [v-clock]{display: none;}(css) 绑定模型数据在页面渲染时短暂显示{{}}
  • 代码文本: v-pre
  • 单次绑定: v-once 只绑定一次模型数据、即使数据改变也不会重新渲染
  • 双向绑定: v-model:value="" <=> v-model=""
  • 样式绑定: :class="{className: true/false}" :style="{'color': 'red'}"
  • 插槽绑定: v-slot:a <=> #a 使v-bind的值和v-html的值相等
<a
  v-bind:href="url"
  class="nav-link"
>
  <slot></slot>
</a>

<navigation-link url="/profile">
  <span class="fa fa-user"></span>
  Your Profile
</navigation-link>

<button type="submit">
  <slot>Submit</slot> //后备内容,默认显示的值
</button>
复制代码

2、指令修饰符(多个修饰符可以同时使用)

  • v-on

    • .stop - 调用 event.stopPropagation(),阻止冒泡。
    • .prevent - 调用 event.preventDefault(),取消事件默认动作。
    • .capture - 添加事件侦听器时使用 capture 模式。
    • .self - 事件从侦听器绑定的元素本身触发时才触发回调。
    • .{keyCode | keyAlias} - 特定键触发时回调。
    • .native - 监听组件根元素的原生事件。
    • .once - 只触发一次回调。
    • .left - 当点击鼠标左键时触发。
    • .right - 点击鼠标右键时触发。
    • .middle - 点击鼠标中键时触发。
    • .passive - 以 { passive: true } 模式添加侦听器
  • v-bind

    • .prop - 绑定 DOM 属性 (property)。
    • .camel - 将 kebab-case 特性名转换为 camelCase。
    • .sync - 扩展成一个更新父组件绑定值的 v-on 侦听器。
  • v-mode

    • .lazy - 取代 input 监听 change 事件。
    • .number - 输入字符串转为有效的数字。
    • .trim - 输入首尾空格过滤

3、生命周期钩子函数

! 不能使用箭头函数来定义一个生命周期方法

  • beforeCreate: 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
  • created: 在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。挂载未开始,$el属性目前不可见。
  • **beforeMount:**在挂载开始之前被调用:相关的 render 函数首次被调用。
  • **mounted:**el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。
  • **beforeUpdate:**数据更新时调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM。
  • **updated:**虚拟 DOM 重新渲染和打补丁之后调用。
  • activated: keep-alive 组件激活时调用。
  • **deactivated:**keep-alive 组件停用时调用。
  • beforeDestroy: 实例销毁之前调用。
  • **destroyed:**Vue 实例销毁后调用。
  • **errorCaptured:**当捕获一个来自子孙组件的错误时被调用。此钩子可以返回 false 以阻止该错误继续向上传播。
errorCaptured(err: Error, vm: Component, info: string) => ?boolean
Vue知识点总结

4、数据和选项

var vm = new Vue({
    data: {
        return {
            price: 1,
            amount: 5
        };
    },
    props: ['size', 'myMessage']
    computed: {
        getTotal: function () {
            return this.price * this.amount;
        },
        plus:{
            get: function(){
                return this.a * 2;
            },
            set: function(){
                this.a = v + 2;
            }
        }
    },
    methods: {
        fun1: function(){}  
    }
    watch: {
        amount: function (val, oldVal) {
            console.log('new: %s, old: %s', val, oldVal)
        }
    }
})

//data:
1、组件只接受函数:组件可被用来创建多个实例,否则所有的实例将共享引用同一个数据对象。
2、vm.$data.a = vm.a
3、深拷贝对象: JSON.parse(JSON.stringify(Obj))

//props的对象语法
props: {
    age: {
        type: Number,  //类型检测
        default: 0,    //设置默认值
        required: true, //是否为必填
        validator: function (value) {  //对值进行验证
            return value >= 0
        }
    }
}

//computed: 计算属性的结果会被缓存,依赖的响应式属性变化才会重新计算
复制代码

5、内置的组件

transition
属性:
    name: 自动生成css过度类名, 默认"V"
    appear: 是否在初次渲染时使用 默认false
    css: 是否使用css过度类,默认 true
    type: 指定过渡事件类型, transition和animation
    mode: 控制离开和进入的过渡时间序列,有效的默认有out-in和in-out
    duration: 指定过渡的持续时间
    enter-class:
    leave-class:
    appear-class:
    enter-to-class:
    leave-to-class:
    appear-to-class:
    enter-to-class:
    leave-active-class:
    appear-active-class:
事件:
    before-enter:
    before-leave:
    bafore-appear:
    enter:
    leave:
    appear:
    after-enter:
    after-leave:
    after-appear:
    enter-cancelled:
    leave-cancelled:
    appear-cancelled:

keep-alive:  包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们
复制代码

6、Vue编程规则:

  • 组件名应该始终是多个单词的;

  • 组件的 data 必须是一个函数;

  • Prop 定义应该尽量详细。(尽量用对象的形式)

  • 为 v-for 设置键值;

  • 为组件样式设置作用域 scoped 或 modules;

  • 把每个组件单独分成文件;

  • 单文件组件的文件名应该要么始终是单词大写开头 (PascalCase),要么始终是横线连接 (kebab-case)。

  • 应用特定样式和约定的基础组件应该全部以一个特定的前缀开头,比如 Base、App 或 V。

  • 只应该拥有单个活跃实例的组件应该以 The 前缀命名,以示其唯一性。

  • 和父组件紧密耦合的子组件应该以父组件名作为前缀命名。

  • props: { greetingText: String }

  • 组件/实例的选项的顺序: name components directives filters props data computed watch (生命周期钩子函数) methods render renderError

  • 元素特性的顺序 is v-for v-if v-else-if v-else v-show v-cloak v-pre v-once id ref key slot v-model v-on v-html v-text

  • 如果一组 v-if + v-else 的元素类型相同,最好使用 key;

  • 禁止使用元素选择器

Vue-Router

编程式导航:

router.push({name: "", params: {id: "12"}}) router.push({path: "", query: {id: "12"}}) //url传参 router.replace(...)

命名视图

<div>
 <h1>User Settings</h1>
 <NavBar/>
 <router-view/>
 <router-view name="helper"/>
</div>

{
 path: '/settings',
 // 你也可以在顶级路由就配置命名视图
 component: UserSettings,
 children: [{
       path: 'emails',
       component: UserEmailsSubscriptions
     }, {
       path: 'profile',
       components: {
         default: UserProfile,
         helper: UserProfilePreview
     }
 }]
}
复制代码

路由组件传参

const router = new VueRouter({
 routes: [
   { path: '/user/:id', component: User, props: true },
   {
     path: '/user/:id',
     components: { default: User, sidebar: Sidebar },
     props: { default: true, sidebar: false }
   }
 ]
})
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入浅出 MFC 第二版

深入浅出 MFC 第二版

侯俊杰 / 松岗 / 1997.05

深入浅出MFC是一本介绍 MFC(Microsoft Foundation Classes)程式设计技术的书籍。对於 Windows 应用软体的开发感到兴趣,并欲使用 Visual C++ 整合环境的视觉开发工具,以 MFC 为程式基础的人,都可以从此书获得最根本最重要的知识与实例。 如果你是一位对 Application Framework 和物件导向(Object Orien......一起来看看 《深入浅出 MFC 第二版》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具