自定义指令的对象写法 (配置项比较细)

本文解析了指令在元素绑定、模板重新解析时的行为,介绍了big函数的调用时机和两种函数定义方式。重点讲解了指令绑定的生命周期方法:bind(), inserted() 和 update() 的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

directives: {
 // big 函数何时会被调用? 
 1: 指令与元素成功绑定时(一上来就会绑定)
 2: 指令所在的模板被重新解析时
 big(element, binding) {   //  第一种函数写法
   console.log('big')  //  页面已加载就会调用一次
   element.innerText = binding.value * 10; 
 }
 第二种对象写法:
 fbind: {
  // 指令与元素成功绑定在一起
  bind() {

  },
  // 指令所在的元素被插入到页面时
  inserted() {

  }
  // 指令所在的模板被重新解析
  update() {

  }
 }
}

### Vue3 的配置选项及其用法 Vue3 提供了许多强大的配置选项,这些选项可以通过 `createApp` 方法中的参数或者通过插件形式来定义。以下是完整的配置项列表以及其具体用途: #### 1. 数据绑定 (`data`) 数据绑定允许开发者在组件实例中声明响应式的变量集合。 ```javascript const app = createApp({ data() { return { message: 'Hello Vue!' }; } }); ``` 此部分用于初始化组件的数据对象[^1]。 #### 2. 生命周期钩子函数 生命周期钩子提供了对组件不同阶段的操作能力。常见的有: - **beforeCreate**: 组件创建之前调用。 - **created**: 组件创建完成之后立即执行。 - **beforeMount**: DOM挂载前触发。 - **mounted**: DOM挂载完成后触发。 - **beforeUpdate**: 更新发生前触发。 - **updated**: 更新完成后触发。 - **beforeUnmount**: 即将销毁时触发。 - **unmounted**: 销毁后触发。 示例代码如下: ```javascript const app = createApp({ data() { return { count: 0 }; }, methods: { increment() { this.count++; } }, mounted() { console.log('Component has been mounted'); }, beforeDestroy() { console.log('Component is about to be destroyed'); } }); ``` 上述代码展示了如何利用生命周期方法实现特定逻辑操作[^4]。 #### 3. 计算属性 (computed properties) 计算属性可以基于其他数据动态生成新的值,并且具有缓存机制。 ```javascript const app = createApp({ data() { return { firstName: 'John', lastName: 'Doe' }; }, computed: { fullName() { return `${this.firstName} ${this.lastName}`; } } }); ``` 此处说明了如何使用计算属性简化模板表达式并提高性能。 #### 4. 自定义指令 (directives) 自定义指令扩展了 HTML 属性的功能范围。 ```javascript app.directive('focus', { mounted(el) { el.focus(); } }); // 使用方式 <div v-focus></div> ``` 这段代码实现了自动聚焦到指定元素上的功能。 #### 5. 插槽 (slots) 插槽提供了一种灵活的内容分发机制。 ```html <template> <slot name="header"></slot> </template> <!-- 调用 --> <MyComponent> <template #header>Header Content</template> </MyComponent> ``` 这表明了如何向子组件递结构化内容。 #### 6. 渲染器 (render function) 渲染函数是一种更底层的方式去描述 UI 结构。 ```javascript export default { render(h) { return h('h1', {}, ['Render Function Example']); } }; ``` 它适合于复杂场景下的程序化界面构建。 #### 7. 响应性转换 (reactivity transform) 这是 Vue3 中新增的一个特性,支持以宏语法的形式书写响应式代码。 ```javascript <script setup lang="ts"> import { ref, reactive } from 'vue'; const state = $ref({ count: 0 }); state.count++; // 直接修改而无需解包 </script> ``` 这种写法减少了样板代码量,提升了开发效率。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值