nuxt3 pinia pinia-plugin-persistedstate

2023-11-18

安装pinia

yarn add pinia @pinia/nuxt
# 或者使用 npm
npm install pinia @pinia/nut

安装pinia-plugin-persistedstate

npm : npm i pinia-plugin-persistedstate
yarn : yarn add pinia-plugin-persistedstate

nuxt工程代码中注册插件plugins\pinia.ts

import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
export default defineNuxtPlugin((nuxtApp) => {
    nuxtApp.$pinia.use(piniaPluginPersistedstate)
})

配置nuxt.config.ts中的modules

 modules: [
    '@pinia/nuxt'
  ],

定义一个stores\user.ts

import { defineStore, } from 'pinia'
const { userApi } = useApi();
export interface UserState {
  isLogin: Boolean,
  userInfo: Object
}

// useStore 可以任意,比如 useUser, useCart
// 参数1是整个应用中唯一的store id
export const userStore = defineStore('user', {
  state: (): UserState => ({
    isLogin: false,
    userInfo: {}
  }),
  actions: {
    // 登录
    async getUserInfo(params: any) {
      const { data } = await userApi.getLogin(params)
      this.isLogin = true
      this.userInfo = data
    },
  },

  persist: process.client && {
    storage: localStorage,
    paths: ['isLogin','userInfo']
  }
})

login.vue

<template>
  <div class="login_container">
    <div class="login_box">
      <el-form
        :label-position="labelPosition"
        label-width="100px"
        :model="loginForm"
        style="max-width: 460px"
      >
        <el-form-item label="用户名" prop="username">
          <el-input
            v-model="loginForm.username"
            placeholder="请输入用户名"
            type="text"
          />
        </el-form-item>
        <el-form-item label="密码" prop="password">
          <el-input
            v-model="loginForm.password"
            type="password"
            placeholder="请输入密码"
          />
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="submitForm">提交</el-button>
        </el-form-item>
      </el-form>
    </div>
  </div>
</template>

<script setup>
import { reactive } from "vue";
import { userStore } from "~/stores/user";
const loginForm = reactive({
  username: "",
  password: "",
});

const submitForm = async () => {
  const user = userStore();
   await user.getUserInfo(loginForm).then((result) => {
      console.log(result)
      navigateTo("/");
    }).catch((err) => {

    });

};
</script>
<style lang="scss" scoped>
.login_container {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100vh;
  .login_box {
    height: auto;
    background-color: #fff;
    padding: 40px 50px;
  }
}
</style>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nuxt3 pinia pinia-plugin-persistedstate 的相关文章

随机推荐

  • 【SSL证书安全】

    SSL证书介绍 一种数字证书 也被称为 https证书 CA证书 安全证书 服务器证书 或 SSL证书 一般新申请的证书中 由三部分组成 分别为 CA证书 公钥 私钥 术语定义 发送内容 私钥加密过的内容 数字签名 确认发送内容的完整性 h
  • Cobalt Strike(学习笔记)

    Cobalt Strike简介 Cobalt Strike 是一款GUI的框架式渗透工具 集成了端口转发 服务扫描 自动化溢出 多模式端口监听 win exe木马生成 win dll木马生成 java木马生成 office宏病毒生成 木马捆
  • Linux实用工具

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 Windows下同步Linux文件 Linux安装Samba和配置 场景需求 安装了Ubuntu在虚拟机上 但是代码编辑或者其它更多的操作的时候 还是习惯在window
  • @Autowired注解的实现原理

    Autowired注解用法 在分析这个注解的实现原理之前 我们不妨先来回顾一下 Autowired注解的用法 将 Autowired注解应用于构造函数 如以下示例所示 public class MovieRecommender privat
  • 3dmax2014卸载/安装失败/如何彻底卸载清除干净3dmax2014注册表和文件的方法

    3dmax2014提示安装未完成 某些产品无法安装该怎样解决呢 一些朋友在win7或者win10系统下安装3dmax2014失败提示3dmax2014安装未完成 某些产品无法安装 也有时候想重新安装3dmax2014的时候会出现本电脑win
  • 【电子电路】逻辑章

    人不能 至少不应该 一天速成电子电路 不全 漏掉的那部分是常识或者 真的是眼睛不好了 BCD码 即8421码 2421码 余3码 平常的二进制就是8421码 其余以此类推 符号位 1100 正 1101 负 可靠性编码 奇偶校验码 奇校验
  • H5页面与vue的客户端交互

    工作中经常遇到一些奇怪的东西 我有个这样的需求 就是我写的vue项目被嵌套在别的h5项目页面下 so进入我的页面前需要判断他的h5页面有没有登录 这时候就需要我的客户端页面调用h5页面的登录方法 客户端页面 ios 安卓 两种都得交互h5页
  • 海康威视系统未连接服务器,ivms-4200客户端登入不了云服务器

    ivms 4200客户端登入不了云服务器 内容精选 换一换 本章节为您介绍以下内容 准备弹性云服务器作为GDS服务器在使用GDS导入导出数据之前 需要准备一台或多台与GaussDB DWS 集群在相同VPC内的Linux弹性云服务器 简称E
  • Redis使用总结(四、处理延时任务)

    引言 在开发中 往往会遇到一些关于延时任务的需求 例如 生成订单30分钟未支付 则自动取消 生成订单60秒后 给用户发短信 对上述的任务 我们给一个专业的名字来形容 那就是延时任务 那么这里就会产生一个问题 这个延时任务和定时任务的区别究竟
  • 简单讲解一下什么是ATT&CK框架

    点击 仙网攻城狮 关注我们哦 不当想研发的渗透人不是好运维 让我们每天进步一点点 简介 ATT CK框架由 MITRE 安全组织提出并列出了APT 高级可持续威胁攻击 的14个阶段涉及到206个安全技术点上千种攻击 检测手段 基本覆盖所有网
  • Mip-Nerf三维重建代码复现教程——环境配置

    Mip Nerf三维重建Pytorch使用Pycharm运行0基础教程 项目论文 项目Github 你好 这里是 出门吃三碗饭 本人 本文章接下来将介绍如何从0运行2020会议Mip Nerf的Pytorch版本 让你自己动手渲染第一个三维
  • 网络安全应急响应----1、应急响应简介

    目录 1 应急响应流程 2 PDCERT应急响应方法模型 3 应急响应常见事件 4 应急响应分析流程 网络安全应急响应 针对已经发生的或可能发生的安全事件进行监控 分析 协调 处理 保护资产安全 1 应急响应流程 2 PDCERT应急响应方
  • uni-App聊天功能的源码

    前言 泡泡IM uniapp版聊天源码是一套完整的基于uniapp开发的聊天软件源码 可编译成微信小程序 安卓 IOS APP聊天软件 H5网页聊天室 uniapp聊天源码未加密 无外部依赖 可私有化部署 可二次开发 文档全面 接口丰富 方
  • 仿kafka实现java版时间轮

    系统定时 超时 在我们平时的项目开发中 会设置系统的超时时间 比如在http接口中设置超时时间 在定时调度中也会用到 在jdk的开发的实现Timer和ScheduledThreadPoolExecutor DelayQueue定时调度中使用
  • React学习之扩展浅比较(三十四)

    注意 这玩意也已经被React PureComponent的功能取代了 这里依旧是提一下 主要是React v15的版本中的react with addons js 这些玩意还存在 哎 害人呐 引入 import shallowCompar
  • c#图像保存为icon

    Icon操作类 实现了将Image图像向Icon的转化 调用示例 Image pic Image FromFile D tmp 2 png IconTool SaveToIcon pic D tmp test2 ico class Icon
  • 5.x Linux RT-Preempt补丁和ARM平台RT-test编译

    1 在make menuconfig中 5 x版本内核的RT Preempt设置在General Setup下面 2 ARM平台的RT test编译 git clone git git kernel org pub scm utils rt
  • springboot 集成elasticsearch遇到的坑

    最近开始学习elasticsearch 所以就想着在springboot里面集成一下elasticsearch 结果遇到了不少麻烦 下面总结一下 但愿大家和自己以后都少走弯路 首先声明下 本人开始学习elasticsearch的时候 官网最
  • python-类变量(类属性),实例变量(实例属性),self作用

    类中定义的变量又称之为属性 类中定义的函数又称之为方法 类中 所有函数 方法 之外 此范围定义的变量 称为类属性或类变量 类中 所有函数 方法 内部 以 self 变量名 的方式定义的变量 称为实例属性或实例变量 类中 所有函数 方法 内部
  • nuxt3 pinia pinia-plugin-persistedstate

    安装pinia yarn add pinia pinia nuxt 或者使用 npm npm install pinia pinia nut 安装pinia plugin persistedstate npm npm i pinia plu