vue3+vite模式下修改pinia的stroe初始值不进行热HMR更新解析

原因:
在这里插入图片描述

import { defineStore } from 'pinia'
interface CounterState {
  count: number;
  name: string;
}
export const useCounterStore = defineStore('counter', {
  state: () => ({ count: 10, name: 'Eduardo' }),
  getters: {
    doubleCount: (state:CounterState) => state.count * 3,
  },
  actions: {
    increment() {
      (this as unknown as CounterState).count += 1
    },
  },
})

当我们修改这里的count并不会引起vite项目的热更新
我从 Vuex 切换到 Pinia,但遇到了“热模块替换”的问题。当在存储中更改状态时,使用该存储的组件不会进行热更新。因为对我来说更改初始值对调试学习更直观一点。
但是在 Pinia store 中的更改不会自动反映,但如果我手动重新加载 vite 开发服务器(刷新),它们就能正常工作。
但是我们一般web开发中


Expected behavior
The state changes (and file is saved) = the preview changes.
状态变化(文件已保存)= 预览变化。

Actual behavior
The state chances, the preview doesn’t (until reloaded).

状态变化,预览不更新(直到重新加载)。
这就不符合历史惯性的开发直觉


无法使 HMR 与 Vite、Vue3 和 Pinia 协同工作?
HMR 无法工作 + 示例在 Safari 和 Chrome(M1)中也无法工作?
这里两个issue表述出:更新新状态时不应重置其他状态值,因此始终保留现有状态值。这也意味着您可以增加一个状态或者注释掉该行并保存(这将删除状态属性),然后取消注释并再次保存。就会刷新,但是问题的根本还是没有解决或者我像知道为什么?

pinia开发者表示

HMR Not Working, Even in Demo
这是预期的,因为状态已经存在。如果我们更改它,就会违背 HMR 的初衷,因为总是将您的状态重置为初始值。您可以在开发者工具中随时更改状态

至此就知道“原来pinia的HMR设计就已经如此了”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇敢*牛牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值