Vue常用指令和生命周期

1. v-bind 指令

v-bind 指令是Vue中用于动态绑定HTML属性的强大工具。它允许我们根据数据的变化,动态地设置元素的属性。

示例:

<template>
  <div>
    <p :class="{ active: isActive, 'text-danger': hasError }">Dynamic Class</p>
    <img :src="imageSource" alt="Dynamic Image">
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
      hasError: false,
      imageSource: 'path/to/default-image.jpg'
    };
  }
}
</script>

在上述例子中,我们使用 v-bind 来动态绑定了classsrc属性。根据isActivehasError的值,段落的class将动态变化,而图片的路径也将根据imageSource的值而改变。

2. v-model 指令

v-model 指令是Vue中用于实现表单元素双向数据绑定的关键。它使得表单元素的值与Vue实例中的数据保持同步。

示例:

<template>
  <div>
    <input v-model="message" placeholder="Type something...">
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: ''
    };
  }
}
</script>

在这个例子中,输入框的值被双向绑定到了message变量上。当输入框中的值发生变化时,message也会同步更新,反之亦然。

3. v-for 指令

v-for 指令用于循环渲染数组或对象中的元素,生成重复的HTML结构。

示例:

<template>
  <ul>
    <li v-for="item in items" :key="item.id">{{ item.text }}</li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' },
        { id: 3, text: 'Item 3' }
      ]
    };
  }
}
</script>

在这个例子中,v-for 循环遍历 items 数组,为每个数组项生成一个列表项。:key 是必须的,它用于帮助Vue识别每个项的唯一性。

4. v-if、v-else-if、v-else 指令

条件渲染是Vue中非常常见的用例,v-if 指令允许我们根据表达式的值来决定是否渲染特定的元素。

示例:

<template>
  <div>
    <p v-if="seen">This paragraph is rendered based on a condition</p>
    <p v-else-if="otherCondition">This is another condition</p>
    <p v-else>If none of the above conditions are met, this paragraph is displayed</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      seen: true,
      otherCondition: false
    };
  }
}
</script>

在上述例子中,v-if 根据 seen 变量的值来决定是否渲染第一个段落。v-else-ifv-else 则提供了多个条件分支的支持。

5. v-show 指令

v-show 指令也用于条件性地渲染元素,但与v-if不同的是,它是通过CSS的display属性来切换元素的可见性。

示例:

<template>
  <div>
    <p v-show="isVisible">This paragraph is controlled by v-show</p>
    <button @click="toggleVisibility">Toggle Visibility</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isVisible: true
    };
  },
  methods: {
    toggleVisibility() {
      this.isVisible = !this.isVisible;
    }
  }
}
</script>

在上述例子中,v-show 根据 isVisible 变量的值来控制段落的可见性。通过点击按钮,可以动态切换段落的显示状态。

6. v-on 指令

v-on 指令用于监听DOM事件,并在事件触发时执行相应的方法。

示例:

<template>
  <div>
    <button @click="handleClick">Click me</button>
  </div>
</template>

<script>
export default {
  methods: {
    handleClick() {
      alert('Button Clicked!');
    }
  }
}
</script>

在这个例子中,@click 监听按钮的点击事件,并调用 handleClick 方法。点击按钮时,将弹出一个提示框。

7. v-pre 指令

v-pre 指令用于跳过对元素及其所有子元素的编译过程,保持原始的Mustache标签。

示例:

<template>
  <div>
    <span v-pre>{{ message }}</span>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'This will not be compiled: {{ message }}'
    };
  }
}
</script>

在上述例子中,v-pre 保留了原始的 {{ message }} 文本,而不会将其视为Vue表达式。

8. v-cloak 指令

v-cloak 指令用于保持元素及其子元素在编译之前不可见,直到实例准备完毕。它通常与CSS配合使用。

示例:

<template>
  <div v-cloak>
    {{ message }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'This will be visible once the Vue instance is ready.'
    };
  }
}
</script>

在上述例子中,v-cloak 将确保在Vue实例准备好之前,{{ message }} 不会在页面上显示。

生命周期图示

在开始之前,让我们先来看一下 Vue 实例的生命周期图示,以便更好地理解每个阶段的顺序和时机。

Vue 的生命周期可以分为八个阶段:

  1. 创建前阶段(beforeCreate): 实例刚在内存中被创建出来,此时还未进行数据初始化和事件的监听。

  2. 创建阶段(created): 实例已经在内存中创建完毕,完成了数据初始化,但尚未挂载到页面上。

  3. 挂载前阶段(beforeMount): 实例将要挂载到页面上,此时 render 函数首次被调用。

  4. 挂载阶段(mounted): 实例已经挂载到页面,此时页面上的 DOM 元素可以被访问。

  5. 更新前阶段(beforeUpdate): 当数据发生变化时,虚拟 DOM 将被重新渲染,但尚未更新到页面上。

  6. 更新阶段(updated): 数据已经更新到页面上,此时页面上的 DOM 元素也得到了更新。

  7. 销毁前阶段(beforeDestroy): 实例将要被销毁,此时可以进行一些清理工作,如取消定时器、解绑事件等。

  8. 销毁阶段(destroyed): 实例已经被销毁,所有的事件监听器都已经被移除,所有的子实例也都被销毁。

代码示例

下面通过一个简单的 Vue 实例,演示每个生命周期阶段的钩子函数和相应的操作。

<template>
  <div>
    <p>{{ message }}</p>
    <button @click="updateMessage">Update Message</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello, Vue!'
    };
  },
  beforeCreate() {
    console.log('beforeCreate: 实例创建前的钩子函数');
  },
  created() {
    console.log('created: 实例创建完毕,数据初始化完成');
  },
  beforeMount() {
    console.log('beforeMount: 实例将要挂载到页面上');
  },
  mounted() {
    console.log('mounted: 实例已经挂载到页面上');
  },
  beforeUpdate() {
    console.log('beforeUpdate: 数据将要更新,虚拟 DOM 重新渲染前');
  },
  updated() {
    console.log('updated: 数据已经更新,页面上的 DOM 元素也已更新');
  },
  beforeDestroy() {
    console.log('beforeDestroy: 实例将要被销毁');
  },
  destroyed() {
    console.log('destroyed: 实例已经被销毁');
  },
  methods: {
    updateMessage() {
      this.message = 'Updated message!';
    }
  }
}
</script>

在这个示例中,我们创建了一个简单的 Vue 实例,包含一个文本显示和一个按钮。按钮点击后,调用 updateMessage 方法更新了 message 数据。在控制台输出中,你将看到每个生命周期阶段的日志信息。

生命周期的应用场景

理解 Vue 的生命周期对于开发复杂的应用是至关重要的。以下是一些生命周期的常见应用场景:

  • created 钩子: 在这个阶段,可以进行数据初始化、异步请求、事件监听等操作。通常用于初始化组件所需的数据。

  • mounted 钩子: 在组件挂载后执行,适合执行需要访问DOM元素的操作,如使用第三方库对页面进行操作。

  • beforeUpdate 钩子: 在数据更新但尚未更新到页面上时执行,可以用于获取更新前的DOM状态,或执行一些更新前的准备工作。

  • updated 钩子: 在数据更新且更新到页面上后执行,适合执行需要操作更新后的DOM的任务。

  • beforeDestroy 钩子: 在组件销毁前执行,可以用于清理定时器、解绑事件等清理工作。

  • destroyed 钩子: 在组件销毁后执行,适合执行一些需要在组件销毁后进行的清理工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vue常用方法总结 第一章 Vue核心知识讲解 5 第二节 引包、留坑、实例化 、插值表达式{{}} 5 1. 引包 5 2. 留坑 5 3. 实例化 5 4. 插值表达式{{ }} 5 第三节 熟悉及使用常用指令 5 1. 什么是指令 5 2. 常用指令有哪些,及怎么使用这些指令 6 第四节 阐述vue单双向数据流及事件绑定 6 1. vue单向数据流绑定属性值 v-bind: (属性) 简写 :(属性) 6 2. vue双向数据流 v-model 只作用于有value属性的元素 7 3. 事件绑定v-on:事件名="表达式||函数名" 简写 @事件名="表达式||函数名" 8 4. 总结 8 第五节 过滤器 8 1、过滤器有全局过滤器和组件内的过滤器 应用 {{ msg | 过滤器名}} 8 2、 vue中的this是vue封装好给我们使用的,跟平常方法里面的this是不同的 9 第六节 数据监听watch(深度监听)计算属性computed 9 watch监听单个,computed监听多个 9 总结: 10 第二章 组件化开发知识介绍 11 第一节 组件化开发 11 1、 创建组件的两种方式 11 局部声明 11 2、组件类型(组件开发三步曲:声明、注册、使用 ) 11 第二节 slot插槽和ref、$parent (重点) 11 1、slot插槽 11 2、ref获取子组件实例 12 第三节 父子组件的通信 (核心) 13 1、父传子 14 2、子传父 14 第四节 非父子组件之间的通信 14 简介:建立Bus总线机制实施非父子组件通讯 14 3、回调函数写法 16 第五节 vue生命周期 17 1、需要频繁的创建和销毁组件 17 2、组件缓存 17 3、成对比较 17 第三章 Vue核心插件之路由模块 18 第一节 路由的跳转原理(哈希模式) 18 1、单页应用的路由模式有两种(哈希模式、history模式) 19 2、 哈希模式原理 19 3、建议的选择:(小D课堂课程) 19 第二节 安装和使用路由 19 第三节 路由的跳转 20 1、路由的跳转方式2种: 20 2、区别: 20 3、vue-router中的对象:$route $router 21 第四节 路由的传参和取参 21 1. 查询参 21 2. 路由参数 21 3、js跳转路由传参和标签传参,路由相同而参数不同时页面不做刷新的问题 22 总结: 22 第五节 嵌套路由(Children) 23 第六节 路由守卫 23 第五章 Vue全家桶各部分核⼼知识详解 24 第1节 构建vue项⽬的利器—脚⼿架vue-cli3 24 1、安装vue-cli3 24 2、创建项⽬ 24 3、 vue.config.js ⼿动在根⽬录新建⼀个vue.config.js⽂件 24 第2节 ⽗⼦组件传值(参考第二章第2、3节) 25 第3节 非⽗⼦组件传值(参考第二章第4节) 25 1. 事件总线(参考第二章第4节) 25 2. $attrs / $listeners 25 3. Vuex (详见第5节) 25 第4节 玩转单⻚⾯应⽤的控制中⼼—vue-router(与第三章基本差不多) 26 梦学谷第137课ElementUI实现页面横向指示导航,比小D课堂的那种写法要好点 26 1、路由的基本配置 26 2、路由的跳转 26 3、动态路由 27 4、嵌套路由 27 5、导航守卫 27 6、路由懒加载 28 第5节 状态管理中⼼—vuex的基础⽤法(官方文档,非常好用) 28  State 28  Mutations 28  Actions 28  vuex⾥包含的基本参数 28  还有别的mapState这些很好用 29 import { mapState, mapMutations } from "vuex";(导入非默认成员) 29 其实是ES6语法,详见梦学谷89课 29 第6节 状态管理中⼼—vuex的⾼级⽤法 29  vuex中的计算属性—Getters 30  模块化概念—Modules 30

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值