再mian.js中,导入和注册
import {createPinia} from 'pinia'
const pinia =createPinia()
app.use(pinia)
在store文件夹下
import { defineStore} from 'pinia'
const useTabbarStore =defineStore("tabbar",{
state(){
returen {
isTabbarShwo:true
}
}
})
简写
import { defineStore} from 'pinia'
const useTabbarStore =defineStore("tabbar",{
state:()({
isTabbarShwo:true//因为返回的当时对象所以要把()变成{}
}),
actions:{
change(value){
this.isTabbarShow=value
}
}
})
export defalut useTabbarStore
在app.vue中使用
<Tabbar v-if="store.istabbarShow">
<script setup>
import useTabbarStore from './store/tabbarStore'
const store=useTabbarStore()
store.istabbrshow=false
store.change(true)
//如果你想这样写<Tabbar v-if="istabbarShow">
//store 是一个reactive包装的对象,
//不能直接结构,能使用到值,但是失去响应式了
// const {istabbrshow }= useTabbarStore
除非这样写
const store=useTabbarStore()
const {istabbrshow }= storeToRefs(store)
对比以前的写法
this.$store.state.isTabbarShow=false
store.$patch的使用
onBeforeUnmount(()=>{
store.$patch({
isTabbarShow:true
})
})
作用:可以补丁式的将对象里的归并到store中的对象
store.$reset()
store.reset() //将设置store为初始值
voa中如何使用pinia
<script>
import useTabbarStore from './store/tabbarStore'
export defalut {
computed:{
...mapState(useTabbarStore ,["istabbarShow"])
},
methods:{
...mapActions(useTabbarStore .["change"])
}
}