我是新来皮尼亚,并有麻烦建立只是一个基本的商店。我一直在关注Pinia自己的文档,似乎无法从我Map到Pinia商店的vue组件中读取任何状态。
在我的应用程序中,我有:
import { createPinia } from 'pinia';
export default function initApp(el) {
let app = createApp(MenuApp);
app.use(router).use(createPinia()).mount(el);
}
我建立了一个超级基本的Pinia商店,只是为了开始:
import {defineStore} from 'pinia';
export const useTestPiniaStore = defineStore('testStore', {
state: () => {
return {
name: 'bob'
}
},
})
在我的vue组件中,我有:
<template>
<div class="menu-page">
<h1>{{name}}</h1>
</div>
</template>
<script>
import { mapState } from 'pinia';
import useTestPiniaStore from '@store/modules/piniaStore';
export default {
computed: {
...mapState(useTestPiniaStore['name']),
}
}
</script>
Pinia出现在我的Vue开发工具中,但没有商店出现,我得到错误Cannot read properties of undefined (reading 'name')
我不明白我做错了什么。如果有人能给予点建议,那将是非常感激的。
2条答案
按热度按时间jv4diomz1#
mapState()
需要两个参数,但您只传递了一个参数。第一个参数应该是
useTestPiniaStore
,第二个应该是要Map的状态属性数组(或对象)。看起来像是试图从useTestPiniaStore
引用name
,也就是undefined
。您的计算 prop 应该如下所示:
demo
6fe3ivhb2#
当我试图使用Options API同时使用Pinia和Vue设置mapState时,我的运气也不好。
对我有用的是使用mapStores。下面是食谱中的一个例子: