当前位置: 首页 > wzjs >正文

比较好的网站搭建论坛江苏国智建设有限公司网站

比较好的网站搭建论坛,江苏国智建设有限公司网站,手机制作网页的步骤,wordpress动态导航Pinia 是 Vue 官方推荐的状态管理库,比 Vuex 更简单、更符合组合式 API 的设计理念。结合持久化插件可以实现状态数据的本地存储。 一、安装 Pinia 及其持久化插件 首先需要安装必要的依赖包: npm install pinia pinia-plugin-persistedstate # 或 ya…

Pinia 是 Vue 官方推荐的状态管理库,比 Vuex 更简单、更符合组合式 API 的设计理念。结合持久化插件可以实现状态数据的本地存储。

一、安装 Pinia 及其持久化插件

首先需要安装必要的依赖包:

npm install pinia pinia-plugin-persistedstate
# 或
yarn add pinia pinia-plugin-persistedstate
# 或
pnpm add pinia pinia-plugin-persistedstate

二、基本配置

1. 在 main.js/ts 中配置 Pinia

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import App from './App.vue'// 创建 Pinia 实例
const pinia = createPinia()
// 使用持久化插件
pinia.use(piniaPluginPersistedstate)const app = createApp(App)// 将 Pinia 挂载到 Vue 应用
app.use(pinia)
app.mount('#app')

2. 创建 Store

在 stores 目录下创建你的 Store 文件,例如 userStore.js

import { defineStore } from 'pinia'
import { ref, computed } from 'vue'export const useUserStore = defineStore('user', () => {// 状态const token = ref('')const userInfo = ref(null)// gettersconst isLogin = computed(() => !!token.value)// actionsconst login = async (credentials) => {// 这里应该是你的登录API调用const res = await api.login(credentials)token.value = res.tokenuserInfo.value = res.user}const logout = () => {token.value = ''userInfo.value = null}return {token,userInfo,isLogin,login,logout}
}, {persist: true // 启用持久化
})

三、在组件中使用 Store

1. 基本使用

<script setup>
import { useUserStore } from '@/stores/user'const userStore = useUserStore()
</script><template><div v-if="userStore.isLogin">欢迎,{{ userStore.userInfo.name }}<button @click="userStore.logout">退出登录</button></div><div v-else><button @click="userStore.login({username: 'admin', password: '123456'})">登录</button></div>
</template>

2. 使用 storeToRefs 解构

注意:storeToRefs 只能解构出状态(变量)和计算属性,而不能解构出方法
          如果需要解构方法,直接用例如  let {getList,onDelete}=userStore()  解构且它只能解构方法

<script setup>
import { storeToRefs } from 'pinia'
import { useUserStore } from '@/stores/user'const userStore = useUserStore()
// 使用 storeToRefs 解构保持响应式
const { token, userInfo, isLogin } = storeToRefs(userStore)
</script>

四、持久化配置详解(可选)

1. 基本配置

{persist: {key: 'user', // 存储的键名,默认为 store 的 idstorage: localStorage, // 存储位置,默认为 localStoragepaths: ['token', 'userInfo'], // 指定要持久化的状态,默认全部serializer: { // 序列化配置serialize: JSON.stringify,deserialize: JSON.parse}}
}

2. 自定义存储键名

{persist: {key: 'my-app-user' // 自定义存储键名}
}

3. 部分状态持久化

{persist: {paths: ['token'] // 只持久化 token}
}

4. 使用 sessionStorage

{persist: {storage: sessionStorage // 使用 sessionStorage 替代 localStorage}
}

5. 自定义序列化(如加密)

import { encrypt, decrypt } from '@/utils/crypto'{persist: {serializer: {serialize: (value) => encrypt(JSON.stringify(value)),deserialize: (value) => JSON.parse(decrypt(value))}}
}

6. 多存储方式组合

{persist: [{key: 'user-info',paths: ['userInfo'],storage: localStorage},{key: 'user-token',paths: ['token'],storage: sessionStorage}]
}

推荐使用持久化的场景

1. 用户身份认证
// userStore.js
export const useUserStore = defineStore('user', () => {const token = ref('')return { token }
}, {persist: true // 保持登录状态
})
  • 作用:避免用户刷新页面后需要重新登录。

2. 购物车/草稿数据
// cartStore.js
persist: {paths: ['items'], // 仅持久化商品列表storage: sessionStorage // 会话级存储
}
  • 作用:防止意外关闭页面导致数据丢失。

3. UI 偏好设置
// settingsStore.js
persist: {key: 'app-settings', // 自定义键名paths: ['theme', 'language'] // 主题和语言设置
}
  • 作用:记住用户的主题、语言等偏好。

五、高级用法

1. 跨 Store 调用

import { defineStore } from 'pinia'
import { useUserStore } from './userStore'export const useCartStore = defineStore('cart', () => {const userStore = useUserStore()const cartItems = ref([])const loadCart = async () => {if (userStore.isLogin) {// 调用 API 获取购物车数据cartItems.value = await api.getCart(userStore.token)}}return { cartItems, loadCart }
}, {persist: true
})

2. 重置 Store 状态

const userStore = useUserStore()
// 重置为初始状态
userStore.$reset()

3. 订阅状态变化

userStore.$subscribe((mutation, state) => {// 当状态变化时执行console.log('状态变化:', mutation, state)
})

文章转载自:

http://KFo8teRU.dmcxh.cn
http://GwryO807.dmcxh.cn
http://XPmDWDyF.dmcxh.cn
http://mAzKrFeM.dmcxh.cn
http://fBMBAzLD.dmcxh.cn
http://J70EiemS.dmcxh.cn
http://E77SiEnx.dmcxh.cn
http://EYT67LaA.dmcxh.cn
http://a80EZU0E.dmcxh.cn
http://Q6k0AQh2.dmcxh.cn
http://8jpmtFct.dmcxh.cn
http://MGUD66mJ.dmcxh.cn
http://Q9xr1EaK.dmcxh.cn
http://NCbrssVB.dmcxh.cn
http://8Wo51BAI.dmcxh.cn
http://AnOXujhi.dmcxh.cn
http://h7xR8BBM.dmcxh.cn
http://9Yv5w5kY.dmcxh.cn
http://iFhqDOy9.dmcxh.cn
http://XnXd3prl.dmcxh.cn
http://DA9DsqDu.dmcxh.cn
http://r3smQvH2.dmcxh.cn
http://F7Xh9Vpq.dmcxh.cn
http://inL0MTHS.dmcxh.cn
http://hmpnwS0V.dmcxh.cn
http://3HHIuYew.dmcxh.cn
http://oPkuRYaP.dmcxh.cn
http://kQ2OQz4I.dmcxh.cn
http://sz9mZvIf.dmcxh.cn
http://ouRXAG6y.dmcxh.cn
http://www.dtcms.com/wzjs/692341.html

相关文章:

  • 做推送好用的网站ui网站开发报价
  • 展示型型网站建设韶山网站建设
  • 手机网站的内容模块网站怎么做弹幕播放器
  • 浙江网站建设价格社区文化建设
  • 重庆忠县网站建设报价新乡seo顾问
  • 原创音乐网站源码哪里有网站开发
  • 如何创建自己网站景德镇网站制作公司
  • 网店美工岗位职责东莞网站优化流程
  • 后台控制网站关键词设置的详细代码昆明网络推广服务
  • 解决方案网站个人网站做跳转怎么弄
  • 丹东做网站的做电信网站运营
  • 51比购网官方网站上海seo顾问
  • 网站优化都是怎么做的学习怎样建网站
  • 萍乡的电子商务网站建设公司广州网站优化步骤
  • 做网站的属于什么工作类型驻马店360网站建设
  • 注册个体可以做网站吗wordpress上传文件慢
  • 网站后台m国外花型设计网站
  • php网站开发参考文献大型网站维护费用
  • 南京自助建站软件wordpress 建站教程
  • 制作自己的网站 域名怎么弄商户网站唯一订单号
  • xuzhou网站制作创意产品设计书
  • 淘宝做基础销量网站深圳网站制作长沙
  • 检测网站点击量成全视频观看免费高清第6季
  • 广西旅游网站建设百度知道小程序
  • 鄂尔多斯 网站制作邯郸专业网站建设公司
  • 图片站 wordpress个人备案做视频网站
  • 深圳市建筑有限公司台州关键词优化哪家好
  • 深圳市建设项目seo优化查询
  • 网站建设板块如何分类天津 网站建设
  • 网页站点怎么命名企业官方网站推广