vue2中使用pinia的记录

提示:工作中需要写一个网页,移动端PC端布局不同,但是有些数据相同,就可以用pinia进行状态管理

一、安装pinia

yarn add pinia
yarn add @vue/composition-api   //vue2中需要这个组合式 API 包

二、在main.js中引入

//在main.js中引入
import {createPinia,PiniaVuePlugin} from 'pinia'
Vue.use(PiniaVuePlugin)
const pinia = createPinia()//需要挂载在实例上

new Vue({
  pinia,
  render: h => h(App)
  
}).$mount('#app')

三、 在vue.config.js中配置

//在vue.config.js中配置,不然会报错
configureWebpack: { 
    module: {
      rules: [
        {
          test: /\.mjs$/,
          include: /node_modules/,
          type: "javascript/auto"
        }
      ]
    }
  }

四、开始使用

1.在store文件夹下新建一个news.js文件

在这里插入图片描述

2.去页面中引入使用

import { mapState } from 'pinia';
import {useNewsStore} from '@/store/news.js'
export default {
    computed: {
        //pinia中的新闻列表数据
        ...mapState(useNewsStore, ['articleList','reverseList','cooper']),
    },
}

然后在标签中使用就行啦

### 如何在 Vue3 中使用 Pinia 进行持久化存储的删除操作 在 Vue3 的开发环境中,Pinia 是一种强大的状态管理工具,而通过引入持久化功能,可以确保某些状态即使在页面刷新或浏览器关闭后仍然存在。然而,在实际项目中,可能需要清除这些已保存的状态以满足特定需求。 #### 清除整个 Store 的持久化数据 如果希望完全清空某个 Store 的持久化数据,可以通过设置 `persist` 属性中的自定义策略来实现。例如: ```javascript import { defineStore } from 'pinia'; import { createPersistedState } from 'pinia-plugin-persistedstate'; export const useUserStore = defineStore('user', { state: () => ({ name: '张三', age: 18, gender: '男' }), actions: { clearStorage() { localStorage.removeItem('pinia:user'); // 手动移除对应的本地存储键值 } }, persist: [ { key: 'user', // 对应的存储键名 storage: localStorage } ] }); ``` 上述代码展示了如何手动调用 `localStorage.removeItem()` 方法来删除指定的存储项[^1]。需要注意的是,这里的 `'pinia:user'` 键名是由 Pinia 插件自动拼接而成,通常格式为 `pinia:<storeName>`。 --- #### 只清除部分 State 数据 当只需要清除 Store 中的部分字段而非全部时,可以在 `actions` 中编写逻辑更新对应的数据并触发同步到存储机制的行为。例如: ```javascript actions: { resetAgeAndGender() { this.age = null; this.gender = ''; } } ``` 由于启用了持久化选项,默认情况下任何对 `state` 的修改都会被写入至所选的存储介质(如 `localStorage`)。因此只需重置目标属性即可间接达到清理的效果[^2]。 --- #### 动态控制哪些字段参与持久化 为了更灵活地处理不同场景下的需求,还可以利用 `paths` 参数限定仅某些字段会被持久化记录下来。对于未列入白名单内的其他字段,则不会受到持久化的约束,自然也无需额外考虑它们的删除问题。如下所示: ```javascript export const useCustomStore = defineStore('custom', { state: () => ({ firstName: '', lastName: '', email: '' }), persist: { enabled: true, strategies: [ { storage: localStorage, paths: ['firstName'] // 唯一持久化的字段 } ] } }); ``` 在此基础上,假如想彻底消除该字段的历史痕迹,同样适用前述提到的手动干预方式——即直接作用于底层存储接口完成清除动作[^3]。 --- ### 总结 综上所述,针对 Vue3 和 Pinia 构建的应用程序而言,执行持久化存储的相关删除操作主要有三种途径:一是借助原生 API 明确指出待销毁的具体条目;二是通过对内部状态赋初值的方式隐含达成目的;三是合理规划初始配置阶段允许范围外的内容免受干扰影响。每种方案各有优劣权衡之处,开发者应当依据实际情况选取最合适的解决办法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值