实现简易 Pinia 核心机制

实现简易 Pinia 核心机制
Aiden Kao题目描述
实现一个简单的 defineStore
函数。
1 | import { ref, computed } from "vue"; |
实现思路
- 基础功能实现
根据 Pinia 中 defineStore 的用法,该函数应返回一个可调用函数(如useCounterStore
),该函数执行时会返回仓库函数的调用结果。基础实现如下:
1 | /** |
- 状态单例化
基础实现存在明显问题:每次调用都会创建新的状态对象,不符合全局状态管理需求。我们通过闭包缓存状态,确保多次调用返回同一实例:
1 | /** |
- 副作用管理(进阶)
Vue 的响应式系统(如computed/watch
)会产生副作用。使用effectScope
可统一管理这些副作用,便于后续清理。
1 | import { effectScope } from "vue"; |