pinia:状态管理工具,相比于Vuex,pinia上手简单,能够更好的检测异步数据的变化,
和Vue3+ts结合使用,一个字:爽
如何使用Pinia
第一步:安装pinia,使用如下命令
npm i pinia
第二步
在src文件夹下新建stores文件夹,此文件夹用来存放数据的状态、公共数据,具体实现如下
// 在stores文件中新建一个index.ts文件,写入一下代码// 创建大store// 导入piniaimport { createPinia } from 'pinia'const pinia = createPinia()// 暴露出去export default pinia// 在main.ts中进行注册使用import pinia from '@/stores'app.use(pinia)
创建小store,例如用户信息user.ts
// 导入创建小store的包import {definePinia} from 'pinia'// 定义一个storeconst useUserStore = definePinia('User',{state:()={return {}},action:{// 进行异步操作// 如发请求、拿数据},getter:{// 类似于计算属性,可以对获取到的数据进行处理}})// 暴露export default useUserStore// 在组件中使用// 比如在login.vue中使用store中的数据import useUserStore from '@/stores/user'const userStore = useUserStore()// 调用store中的方法userStore.userLogin()
总结:在vue中,任何一个第三方工具的使用,都可以理解为以下步骤
安装—>定义 —> 注册 —> 使用,包括Vuex状态管理工具的使用、路由的使用
Vuex的使用
同pinia一样,也是一个状态管理工具,和Vue2结合使用,一个字:香
// 安装Vuexnpm i vuex// // 在stores文件中新建一个index.ts文件,写入一下代码// 总的storeimport { createApp } from 'vue'import { createStore } from 'vuex'import user from './modules/user'Vue.use(Vuex)const store = Vuex.Stroe({modules:{// 其他分storeuser}})// 其他小storeconst user = {namespace:true,//开启命名空间state:{// 存放状态数据categoryList: []},mutations:{// 直接更新数据saveCategoryList(state, params) {// 可以对数据进行截取state.categoryList = params.slice(0, 15)}},actions:{// 异步更新数据async getCategoryList(context) {// 调用 API 获取数据const res = await reqCategoryList()// 判断后端返回的业务状态码// 业务状态码:是后端返回的标识,用来标识数据是否返回正常// 如果返回是的 200,说明数据返回正常// 如果返回不是 200,说明数据异常if (res.code === 200) {context.commit('saveCategoryList', res.data)}},},getter:{// 类似于计算属性}}// 导出storeexport default user// 注意:此模块中的namespace可以研究一波,不要太深入// 在组件中使用mounted(){this.$store.dispatch('home/getSwiperList')}computed: {// 辅助函数一共有4个,为了方便操作Vuex中的数据而产生的...mapState('home', ['swiperList']) //借助附注函数}
