vue에서 사용자 정의 명령어 사용에 대한 간략한 분석

PHPz
풀어 주다: 2023-03-27 18:47:36
앞으로
1281명이 탐색했습니다.

최근 프로젝트에서는 Vue의 사용자 정의 지침을 많이 사용했습니다. 동료 및 다른 친구들의 연구에 따르면 많은 사람들이 Vue에서 제공하는 이 기능을 거의 사용하지 않는 것으로 나타났습니다. 그래서 나는 내 사용 방법 중 일부를 정리하고 친구들과 공유하여 모든 사람들이 사용자 정의 지침의 기능을 무시하고 우리 솔루션에 다른 옵션을 추가하지 않도록 할 것입니다.

사용자 정의 지시어

Vue에 내장된 일련의 명령(예: v-model 또는 v-show) 외에도 Vue에서는 다음을 허용합니다. 사용자 정의 명령을 등록하려면 사용자 정의 지시문을 사용하세요. v-model 或 v-show) 之外,Vue 还允许你注册自定义的指令 (Custom Directives)。

两种在 Vue 中重用代码的方式:组件组合式函数。组件是主要的构建模块,而组合式函数则侧重于有状态的逻辑。另一方面,自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑。

一个自定义指令由一个包含类似组件生命周期钩子的对象来定义。钩子函数会接收到指令所绑定元素作为其参数。【相关推荐:vuejs视频教程web前端开发

更为详细的介绍可参考 Vue 官方文档:cn.vuejs.org/guide/reusa…

Quick Start

Vue 自定义指令有全局注册局部注册两种方式。

先来看看注册全局指令的方式,通过 Vue.directive( id, [definition] )方式注册全局指令。然后在入口文件中进行 Vue.use()调用。

批量注册指令,新建 src/directives/index.js 文件:

import fitColumns from './fit-columns'
import enterToInput from './enter-to-input'
import resizeHeight from './resize-height'
import resizeWidth from './resize-width'
import inputFilter from './input-filter'
import copy from './copy'
import longpress from './longpress'
import clickOutside from './click-outside'
import emoji from './emoji'

const directives = {
  fitColumns,
  enterToInput,
  resizeHeight,
  resizeWidth,
  inputFilter,
  copy,
  longpress,
  clickOutside,
  emoji
}

export default {
  install(Vue) {
    Object.keys(directives).forEach((key) => {
      Vue.directive(key, directives[key])
    })
  }
}
로그인 후 복사

在 main.js 引入并调用:

// .....

import Directives from '@/directives'
Vue.use(Directives)

//.....
로그인 후 복사

接下来就要开发具体的自定义指令了,那么开发的要领,以及一些开发技术点还是要先赘述一遍。

Vue2版本: 一个指令定义对象可以提供如下几个钩子函数 (均为可选):

  • bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。
  • inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。
  • update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新。
  • componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。
  • unbind:只调用一次,指令与元素解绑时调用。

指令钩子函数会被传入以下参数

관련 라벨:
원천:juejin.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!