Vue3.0自定义指令

自定义指令本质:使用JavaScript操作Dom元素

自定义指令使用

(1)定义

采用模块化定义,在src目录下创建directives目录,在这个目录中放置项目用到的所有自定义指令,方便管理和维护。

(2)注册

全局注册(使用较少)和局部注册

(3)页面使用

在html页面模板使用时,在定义的指令前加v-


Example1:页面加载输入框自动获取焦点

//App.vue


//directives目录下的focus.js
export default{    //导出默认对象
    mounted(el,binding,vnode){    //el:绑定的input
        el.focus()
}

Example2:文本高亮显示

//directives目录下的highlight.js
export default{
    mounted(el,binding,vnode){
        el.style.color=binding.value
    }
}

 Vue3.0自定义指令中的钩子函数

Vue3.0自定义指令中的钩子函数与以前的版本不兼容,vue3.0有以下几个钩子函数:

const MyDirective={
    beforeMount(el,binding,vnode,prevVnode){},
    mounted(){},
    beforeUpdate(){},    //新
    updated(){},
    beforeUnmount(){},    //新
    unmounted(){}
}

Example3:导航条

//directives目录下navcurrent.js
export default{
    mounted(el,binding,vnode){
        const ops=binding.value
        const navItem=el.getElementsByClassName(ops.className)
        navItem[ops.curIdx].classList.add(ops.activeClass)
    },
    updated(el,binding,vnode){
        const ops=binding.value
        const oldOps=binding.oldValue
        const navItem=el.getElementsByClassName(ops.className)
        navItem[oldOps.curIdx].classList.remove(ops.activeClass)
        navItem[ops.curIdx].classList.add(ops.activeClass)
    }
}

你可能感兴趣的:(前端,vue)