vue笔记1

这篇博客详细介绍了Vue的生命周期,包括beforeCreate、created、mounted等阶段,强调了在不同阶段可以进行的操作。此外,讲解了v-if与v-show的区别,以及指令的修饰符用法。还探讨了计算属性与监听属性,以及如何在Vue中绑定Class和Style。最后,深入讨论了组件间的通信,包括父组件向子组件传递数据、子组件向父组件发送事件,以及兄弟组件间通信的方法。
摘要由CSDN通过智能技术生成

vue学习笔记

生命周期

beforeCreate( 创建前 )
在实例初始化之后,数据观测和事件配置之前被调用,此时组件的选项对象还未创建,el 和 data 并未初始化,因此无法访问methods, data, computed等上的方法和数据。

created ( 创建后 )
实例已经创建完成之后被调用,在这一步,实例已完成以下配置:数据观测、属性和方法的运算,watch/event事件回调,完成了data 数据的初始化,el没有。 然而,挂在阶段还没有开始, $el属性目前不可见,这是一个常用的生命周期,因为你可以调用methods中的方法,改变data中的数据,并且修改可以通过vue的响应式绑定体现在页面上,,获取computed中的计算属性等等,通常我们可以在这里对实例进行预处理,也有一些童鞋喜欢在这里发ajax请求,值得注意的是,这个周期中是没有什么方法来对实例化过程进行拦截的,因此假如有某些数据必须获取才允许进入页面的话,并不适合在这个方法发请求,建议在组件路由钩子beforeRouteEnter中完成

beforeMount
挂在开始之前被调用,相关的render函数首次被调用(虚拟DOM),实例已完成以下的配置: 编译模板,把data里面的数据和模板生成html,完成了el和data 初始化,注意此时还没有挂在html到页面上。

mounted
挂在完成,也就是模板中的HTML渲染到HTML页面中,此时一般可以做一些ajax操作,mounted只会执行一次。

beforeUpdate
在数据更新之前被调用,发生在虚拟DOM重新渲染和打补丁之前,可以在该钩子中进一步地更改状态,不会触发附加地重渲染过程

updated(更新后)
在由于数据更改导致地虚拟DOM重新渲染和打补丁只会调用,调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作,然后在大多是情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环,该钩子在服务器端渲染期间不被调用

beforeDestrioy (销毁前)
在实例销毁之前调用,实例仍然完全可用,

这一步还可以用this来获取实例,
一般在这一步做一些重置的操作,比如清除掉组件中的定时器 和 监听的dom事件
destroyed(销毁后)
在实例销毁之后调用,调用后,所以的事件监听器会被移出,所有的子实例也会被销毁,该钩子在服务器端渲染期间不被调用

指令

v-if与v-show的区别

  • v-show本质就是标签display设置为none,控制隐藏
  • v-if是动态的向DOM树内添加或者删除DOM元素
  • v-show其实就是在控制css
  • v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件

一般来说,v-if 有更高的切换开销,而 v-show有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

指令的修饰符

事件修饰符
vue为v-on提供了事件修饰符,通过点(.)表示的指令后缀来调用修饰符。

  1. .stop 阻止点击事件冒泡。等同于JavaScript中的event.stopPropagation()
  2. .prevent 防止执行预设的行为,等同于JavaScript中的event.preventDefault()
  3. .capture 与事件冒泡的方向相反,事件捕获由外到内,捕获事件 如:嵌套三层父子关系,然后所有都有点击事件,点击子节点,就会触发从外至内 父节点->子节点的点击事件
  4. .self 只会触发自己范围内的事件,不包含子元素
  5. .once 只执行一次,如果我们在@click事件上添加.once修饰符,只要点击按钮只会执行一次。

v-model修饰符

  1. .lazy
    在默认情况下,v-model在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步:
<!-- 在“change”时而非“input”时更新 -->
<input v-model.lazy="msg" >
  1. .number
    如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:
<input v-model.number="age" type="number">

这通常很有用,因为即使在 type="number" 时,HTML 输入元素的值也总会返回字符串。如果这个值无法被 parseFloat()解析,则会返回原始的值。
3. .trim
如果要自动过滤用户输入的首尾空白字符,可以给 v-model添加 trim 修饰符:

<input v-model.trim="msg">

计算属性与监听属性

1. 计算属性 computed
在一个计算属性里可以完成各种复杂的逻辑,包括运算、函数调用等,只要最终返回一个结果就可以。

<div id="example">
        <p>Original message: "{
  { message }}"</p>
        <p>Computed reversed message: "{
  { reversedMessage }}"</p> // 我们把复杂处理放在了计算属性里面了
    </</
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值