import { describe, beforeEach, it, expect } from 'vitest'
import { computed, reactive, ref, ToRefs } from 'vue'
import { createPinia, defineStore, setActivePinia, storeToRefs } from '../src'
+import { set } from 'vue-demi'
describe('storeToRefs', () => {
beforeEach(() => {
expect(refs.n.value).toBe(2)
})
+ it('keep reactivity', () => {
+ const store = defineStore('a', () => {
+ const n = ref(0)
+ const double = computed(() => n.value * 2)
+ return { n, double }
+ })()
+
+ const { double } = storeToRefs(store)
+
+ // Assuming HMR operation
+ set(
+ store,
+ 'double',
+ computed(() => 1)
+ )
+
+ expect(double.value).toEqual(1)
+ })
+
tds(() => {
const store1 = defineStore('a', () => {
const n = ref(0)
// @ts-expect-error: toRefs include methods and others
return toRefs(store)
} else {
- store = toRaw(store)
+ const rawStore = toRaw(store)
const refs = {} as StoreToRefs<SS>
- for (const key in store) {
- const value = store[key]
+ for (const key in rawStore) {
+ const value = rawStore[key]
if (isRef(value) || isReactive(value)) {
// @ts-expect-error: the key is state or getter
refs[key] =