16 nuxt3学习 (状态管理 集成element plus)
创始人
2024-05-30 20:12:00
0

useState

Nuxt跨页面、跨组件全局状态共享可使用 useState(支持Server和Client )

useState(init?: () => T | Ref): Ref
useState(key: string, init?: () => T | Ref): Ref
  • key: 一个唯一的键,确保跨请求正确地去重复数据获取。如果您没有提供密钥,那么将为您生成一个唯一的文件和useState实例的行号的密钥。
  • init: 在未启动时为状态提供初始值的函数。这个函数也可以返回一个 Ref。
  • T: (typescript only) 指定状态类型

注意:

  • useState只在setup或Lifecycle Hooks期间工作。
  • 因为useState中的数据将被序列化为JSON,所以它不包含任何不能序列化的内容,例如类、函数或符号,这一点很重要。

使用步骤:

  1. 在 composables 目录下创建一个模块,如: composables/states.ts
  2. 在states.ts中使用 useState 定义需全局共享状态,并导出
  3. 在组件中导入 states.ts 导出的全局状态

composables/useCounter.ts

export default function () {return useState("counter", () => 100); // Ref
}// export const useCounter = () => {
//   return useState("counter", () => 100);
// };

pinia

安装:

npm install @pinia/nuxt –-save
npm install pinia –-save

如有遇到pinia安装失败,可以添加 --legacy-peer-deps 告诉 NPM 忽略对等依赖并继续安装。或使用yarn

修改配置:
nuxt.config.ts

export default defineNuxtConfig({// 这里是配置Nuxt3的扩展的库modules: ["@pinia/nuxt"],
});

使用步骤:

  1. 在store文件夹中定义一个模块,比如:store/counter.ts
  2. 在 store/counter.ts 中使用defineStore函数来定义 store 对象
  3. 在组件中使用定义好的 store对象
  4. 注释:与vue3中一样

store/home.ts

import { defineStore } from "pinia";export interface IState {counter: number;homeInfo: any;
}export const useHomeStore = defineStore("home", {state: (): IState => {return {counter: 0,homeInfo: {},};},actions: {increment() {this.counter++;},async fetchHomeData() {const url = "http://codercba.com:9060/juanpi/api/homeInfo";const { data } = await useFetch(url);console.log(data.value.data);this.homeInfo = data.value.data;},},
});

使用

useState与pinia对比

共同点:

  • 都支持全局状态共享,共享的数据都是响应式数据
  • 都支持服务器端和客户端共享

Pinia优势:

  • 开发工具支持(Devtools)
  • 模块热更换
  • 插件:可以使用插件扩展 Pinia 功能
  • 提供适当的 TypeScript 支持或自动完成

集成element plus

安装:

npm install element-plus --save
npm install unplugin-element-plus --save-dev 

配置Babel对EP的转译
配置自动导入样式

nuxt.config.ts

import ElementPlus from "unplugin-element-plus/vite";
export default defineNuxtConfig({// dev buildbuild: {// 使用 Babel 进行语法转换transpile: ["element-plus/es"],},vite: {// 配置自动导入样式plugins: [ElementPlus()],},
});

使用:

相关内容

热门资讯

小学运动会报道稿   小学运动会报道稿(一)  《激动人心的边面接力赛》  最后一个项目是接力赛,也是最容易得分的一项...
孩子十二岁生日父母发言稿 孩子十二岁生日父母发言稿(精选6篇)  现如今,能够利用到发言稿的场合越来越多,发言稿具有逻辑严密,...
小学秋季运动会通讯稿 小学秋季运动会通讯稿  超越对手,超越自我,是我们的目标,下面是小学运动会的通讯稿,欢迎大家阅读借鉴...
小学运动会广播稿 小学运动会广播稿50字精选  1、致接力运动员  接力比赛最好看,争先恐后跑在前,同学热烈在呐喊,我...
《化学反应速率和限度》说课稿 《化学反应速率和限度》说课稿  写说课稿首先必须明确什么叫说课,所谓说课,就是教师备课之后讲课之前(...
《李时珍夜宿古寺》评课稿 《李时珍夜宿古寺》评课稿范例  前天去听了朱老师的一节课。她上的是四年级上册中的一篇《李时珍夜宿古寺...
学生评价量规 学生范例评价量规《走进名著,浸润书香》学生演示文稿评价量规评价要求 评价指标 资料的收 集(20) ...
初中篮球课说课稿 初中篮球课说课稿  体育与健康课程对于提高学生的体质和健康水平,促进学生全面和谐发展,培养社会主义现...
技能大赛领导发言稿 技能大赛领导发言稿第一种美丽和感动来自于学校领导和班主任。是你们的关心和重视为技能大赛取得全市团体前...
《绝招》说课稿 《绝招》说课稿  今天我说课的内容是小学语文第六册的《绝招》,我将从教材,教法和学法,教学设计,板书...
大学毕业诗朗诵稿 大学毕业诗朗诵稿  大学毕业诗朗诵稿一:  那年的我们一起哭,一起笑  哭我们的愤怒  笑我们的幸福...
跳远运动员的加油稿 跳远运动员的加油稿(精选10篇)  在充满活力,日益开放的今天,我们很多时候都不得不用到加油稿,借助...
中国的节日风俗广播稿 关于中国的节日风俗广播稿精选  古怪节日集(广播稿)  三月3的稿,自己很辛苦得编辑,可别乱拿!!!...
计算机等级信息 : 计算机一...   计算机等级信息 : 2017计算机一级MSOffice考点解析  5.3.1视图  1.“普通”...
安全生产活动个人发言稿 安全生产活动个人发言稿(精选11篇)  在社会一步步向前发展的今天,能够利用到发言稿的场合越来越多,...
我的早年生活说课稿 我的早年生活说课稿  一、说教材:  1、设计理念:  根据新课程标准的要求,教学应树立以学生为主体...
高中家长会班长发言稿 高中家长会班长发言稿  家长会是针对一项或多项主题,以教师讲述和传达为主,以家长提问为辅的形式。小编...
大学生生活委员的竞选稿 大学生生活委员的竞选稿亲爱的老师们,亲爱的同学们,各位下午好!  我今日要竞选的是生活委员,我愿意为...
趣味运动会加油稿50字左右   趣味运动会加油稿该怎么写?怎么才能通过加油稿进行加油打气呢?下面是小编为大家整理分享的一些趣味运...
高中体育说课稿《武术初级长拳... 高中体育说课稿《武术初级长拳》  一、课的指导思想  依据新课标的要求,新的体育与健康课程在教育方式...