pinia基本使用(二)の值的获取
仓库获取值的方式
- 通过仓库实例获取
<script lang="ts" setup> import { mainStore } from './sotre/index' const store = mainStore() const change = ()=>{ store.change(1) } </script> <template> <h1>{{ store.count }}</h1> <button @click="change">改变</button> </template>
- 解构仓库实例获取
注意: 解构都会使数据失去响应式,所以可以通过vue本身提供的toRefs
添加响应式或者pinia提供的storeToRefs
<script lang="ts" setup>
import { mainStore } from './sotre/index'
/* 推荐使用pinia提供的添加响应式方法 */
import { storeToRefs } from 'pinia'
const store = mainStore()
const { count } = storeToRefs(store)
const change = ()=>{ store.change(1) }
</script>
<template>
<h1>{{ count }}</h1>
<button @click="change">改变</button>
</template>
值得注意: 在ts中,使用storeToRefs解构actions中的方法会提示找不到,所以如果是方法不推荐解构获取
- map函数
定义: pinia提供了类似vuex中的map函数,返回一个值/方法的集合对象
用法:
mapState(模块名称,数组/对象),mapGetters(),mapActions()<script lang="ts" setup> import { mainStore } from './sotre/index' /* 推荐使用pinia提供的添加响应式方法 */ import { mapState,mapActions, mapGetters } from 'pinia' const { count } = mapState(mainStore,[ 'count','value1', 'value2' ]) /* 对象方法写法 mapState独有 可以对state的值进行加工 */ const stateAll = mapState(mainStore, { count(state){ return state.count ** 2 } }) const store4 = mapGetters(mainStore, ['countDouble']) const dbCount = store4.dbCount() const { changeV } = mapActions(mainStore, ['changeV']) const foo = ()=>{ changeV(3) } </script> <template> // 返回的是函数需要执行一下才能返回真正的值 <h1>{{ count() }}</h1> <button @click="foo">改变</button> </template>
注意: 使用mapState和mapGetters获取指定值,返回的都是函数,需要调用获取真正的值
注意: 解构不会失去响应式
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!