Vue实用方法与技巧探索

  1. Vue对象的完整成员
    var vm = new Vue({
    // 数据
    data: “声明需要响应式绑定的数据对象”,
    props: “接收来自父组件的数据”,
    propsData: “创建实例时手动传递props,方便测试props”,
    computed: “计算属性”,
    methods: “定义可以通过vm对象访问的方法”,
    watch: “Vue实例化时会调用 watch()watch,//DOMel:DOMVue,template:,render:,renderError:render(),//beforeCreate:Vuedataobserverevent/watcher,created:Vuedataobserverevent/watcher,beforeMount:render(),mounted:elvm. w a t c h ( ) 方 法 遍 历 w a t c h 对 象 的 每 个 属 性 ” , / / D O M e l : “ 将 页 面 上 已 存 在 的 D O M 元 素 作 为 V u e 实 例 的 挂 载 目 标 ” , t e m p l a t e : “ 可 以 替 换 挂 载 元 素 的 字 符 串 模 板 ” , r e n d e r : “ 渲 染 函 数 , 字 符 串 模 板 的 替 代 方 案 ” , r e n d e r E r r o r : “ 仅 用 于 开 发 环 境 , 在 r e n d e r ( ) 出 现 错 误 时 , 提 供 另 外 的 渲 染 输 出 ” , / / 生 命 周 期 钩 子 b e f o r e C r e a t e : “ 发 生 在 V u e 实 例 初 始 化 之 后 , d a t a o b s e r v e r 和 e v e n t / w a t c h e r 事 件 被 配 置 之 前 ” , c r e a t e d : “ 发 生 在 V u e 实 例 初 始 化 以 及 d a t a o b s e r v e r 和 e v e n t / w a t c h e r 事 件 被 配 置 之 后 ” , b e f o r e M o u n t : “ 挂 载 开 始 之 前 被 调 用 , 此 时 r e n d e r ( ) 首 次 被 调 用 ” , m o u n t e d : “ e l 被 新 建 的 v m . el替换,并挂载到实例上之后调用”,
    beforeUpdate: “数据更新时调用,发生在虚拟DOM重新渲染和打补丁之前”,
    updated: “数据更改导致虚拟DOM重新渲染和打补丁之后被调用”,
    activated: “keep-alive组件激活时调用”,
    deactivated: “keep-alive组件停用时调用”,
    beforeDestroy: “实例销毁之前调用,Vue实例依然可用”,
    destroyed: “Vue实例销毁后调用,事件监听和子实例全部被移除,释放系统资源”,
    // 资源
    directives: “包含Vue实例可用指令的哈希表”,
    filters: “包含Vue实例可用过滤器的哈希表”,
    components: “包含Vue实例可用组件的哈希表”,
    // 组合
    parent: “指定当前实例的父实例,子实例用this. parent访 p a r e n t 访 问 父 实 例 , 父 实 例 通 过 children数组访问子实例”,
    mixins: “将属性混入Vue实例对象,并在Vue自身实例对象的属性被调用之前得到执行”,
    extends: “用于声明继承另一个组件,从而无需使用Vue.extend,便于扩展单文件组件”,
    provide&inject: “2个属性需要一起使用,用来向所有子组件注入依赖,类似于React的Context”,
    // 其它
    name: “允许组件递归调用自身,便于调试时显示更加友好的警告信息”,
    delimiters: “改变模板字符串的风格,默认为{{}}”,
    functional: “让组件无状态(没有data)和无实例(没有this上下文)”,
    model: “允许自定义组件使用v-model时定制prop和event”,
    inheritAttrs: “默认情况下,父作用域的非props属性绑定会应用在子组件的根元素上。当编写嵌套有其它组件或元素的组件时,可以将该属性设置为false关闭这些默认行为”,
    comments: “设为true时会保留并且渲染模板中的HTML注释”
    });
  2. Vue中watch的高级用法
    (1)监听$route

                使用场景:当两个路由指向同一个组件是,修改路由视图并未更新,第二个组件的created未执行,这时需要监听$route
    
                eg:  
    

created () {
console.log(this.getStatus(this.route.path))   
},   
methods: {   
    getStatus (urlStr) {   
        var urlStrArr = urlStr.split(‘/’)   
        return urlStrArr[urlStrArr.length - 1]   
    }   
},   
watch: {   
    ‘
route.path))   },   methods: {       getStatus (urlStr) {           var urlStrArr = urlStr.split(‘/’)           return urlStrArr[urlStrArr.length - 1]       }   },   watch: {       ‘
route’ (to, from) {
console.log(this.getStatus(this.$route.path))
}
}

           (2)  watch默认在数据第一次修改时开始监听,对对象的内部的属性监听不到,只能监听对象的引用。

      使用场景:1.组件要求第一次修改之前就开始监听 2. 深度去监听对象的属性。
                  eg:

data() {
return {
fullName: ”,
firstName: ”,
lastName: ”,
obj: {
name: ‘huoalong’
}
}
},
watch: {
firstName: {
handler(newName, oldName) {
this.fullName = newName + this.lastName;
},
immediate: true //在第一次修改之前开始监听,
deep: true, //深度监听对象内部的属性
}
}
deep的意思就是深入观察,监听器会一层层的往下遍历,给对象的所有属性都加上这个监听器,但是这样性能开销就会非常大了,任何修改obj里面任何一个属性都会触发这个监听器里的 handler,如果我们明确要观察哪个属性时可以这样做

watch: {
‘obj.name’: {
handler(newName, oldName) {
this.fullName = newName + this.lastName;
},
immediate: true //在第一次修改之前开始监听
}
}
(3) 通过组件的属性props设置一个动态变化的值时需要用到watch

                场景:父子组件通过props传动态值时,需要在子组件data里面重新定义一个变量对象来盛放props,然后用watch监听。

父组件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值