先来看一下官方文档中访问 state
访问 state
默认情况下,你可以通过 store
实例访问 state
,直接对其进行读写。
const store = useStore()
store.count++
注意,新的属性如果没有在 state() 中被定义,则不能被添加。它必须包含初始状态。例如:如果 secondCount 没有在 state() 中定义,我们无法执行 store.secondCount = 2。
然而在 template 标签中 store. 无法访问 pinia 中的 ref 对象,只能访问方法,这时候自然而然想到可以在 script 标签中再次用 ref 接受 store 的 state
这时候神奇的事情就产生了,ts 表面上知道新的 ref 对象的类型,在 script 标签中可以获取类型提示,但是一旦到 template 标签中, 新的 ref 对象失去了类型提示
本人尝试使用过 computed 接受 store 的 state, 同样的效果
也尝试了 toRef 函数转化 ref 对象,依然难以处理
解决方法
老老实实编写 get 函数返回非 ref 代理对象
一点思考
在 pinia 中 ref 代理的对象, 在组件中如果再次使用代理,可能会产生双重代理的冲突?
不确定,反正有了 pinia 的确不需要再在组件中使用 ref 了,建议还是编写 get 函数吧