一、vue的生命周期函数
- beforeCreate: 在实例被创建之初,数据观测和初始化事件之前调用。
- created: 实例已经创建完成之后调用,此时实例还没有完成挂载。
- beforeMount: 在挂载开始之前被调用,在此时可以对模板进行编译。
- mounted: 在挂载完成后被调用,此时实例已经完成了渲染并且已经挂载到页面上。
- beforeUpdate: 数据更新时被调用,此时页面尚未被重新渲染。
- updated: 数据更新完成后被调用,此时页面已经被重新渲染。
- activated: 被 keep-alive 缓存的组件激活时调用。
- deactivated: 被 keep-alive 缓存的组件停用时调用。
- beforeDestroy: 实例销毁之前调用。
- destroyed: 实例销毁之后调用,此时实例中的所有东西都已经被释放
二、vue的计算属性
计算属性是Vue实例中一个非常重要的概念。它可以对数据进行处理并返回一个计算结果。计算属性的特点是具有缓存性,当计算属性所依赖的数据发生变化时会自动重新计算计算属性的值,而当计算属性所依赖的数据没有发生变化时会直接返回缓存的值,不需要重新计算,从而提高了组件的渲染效率。
在Vue实例中可以通过computed属性定义计算属性。
示例代码:
<template>
<div>
<p>简单的计算属性:{{ messageCount }}</p>
<p>带参数的计算属性:{{ fullName }}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: 'Hello, Vue!',
firstName: 'John',
lastName: 'Doe'
}
},
computed: {
messageCount() {
return this.message.length
},
fullName() {
return `${this.firstName} ${this.lastName}`
}
}
}
</script>
在上面的示例中,我们定义了一个简单的计算属性messageCount,它返回message字符串的长度。同时我们也定义了一个带参数的计算属性fullName,它返回firstName和lastName合并的字符串。
在模板中我们可以直接使用计算属性的名称来显示计算结果,如{{ messageCount }}和{{ fullName }}。
总之,计算属性是Vue非常强大的一个特性,可以使我们更加便捷地进行数据处理和渲染。同时,要注意计算属性所依赖的数据不能太复杂,否则会影响性能。
三、vuex状态管理
Vuex是Vue.js的官方状态管理库,用于在大型Vue.js应用程序中管理全局状态。它基于Flux架构,提供了一个集中式的存储容器,用于管理整个应用程序的状态。
使用Vuex的好处在于可以让应用程序的状态集中在一个store中,方便进行管理和维护。同时,通过Vuex提供的API,可以实现对状态的精确控制,使得应用程序的状态更加可预测和稳定。
下面是Vuex的基本使用流程:
- 安装Vuex并在Vue应用程序中引入Vuex
npm install vuex
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
- 定义Vuex的store
store是Vuex的核心概念,它是一个状态容器,用于存储应用程序的所有状态。可以通过Vuex的state、mutations、actions、getters等属性和方法对store进行配置和修改。
示例代码:
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++
}
},
actions: {
incrementAsync({ commit }) {
setTimeout(() => {
commit('increment')
}, 1000)
}
},
getters: {
getCount: state => state.count
}
})
在这个示例中,我们定义了一个状态count和两个方法increment和incrementAsync,分别用于同步和异步地修改状态。同时我们还定义了一个getter方法getCount,用于获取状态count的值。
- 在Vue组件中使用Vuex
可以通过Vue的computed属性或者methods属性,从store中获取或修改状态值。通常,在Vue组件中使用Vuex,需要引入Vuex的mapState、mapMutations、mapActions、mapGetters等方法,以便可以更加方便地使用store中的状态和方法。
示例代码:
<template>
<div>
<p>Count: {{ count }}</p>
<button @click="increment">Increment</button>
<button @click="incrementAsync">Increment Async</button>
</div>
</template>
<script>
import { mapState, mapMutations, mapActions } from 'vuex'
export default {
computed: {
...mapState(['count'])
},
methods: {
...mapMutations(['increment']),
...mapActions(['incrementAsync'])
}
}
</script>
在这个示例中,我们通过mapState方法将count状态映射到组件中,通过mapMutations和mapActions方法将increment和incrementAsync方法映射到组件中。
通过这些步骤,我们就可以使用Vuex来管理应用程序中的状态了。同时,Vuex还提供了更多高级特性,如模块化管理、持久化存储等,可以根据实际需求进行使用。