vue3中的pinia

<template>
  <div class="talk">
    <button @click="getLoveTalk">获取一句土味情话</button>
    <ul>
      <li v-for="talk in talkStore.talkList" :key="talk.id">{{talk.title}}</li>
    </ul>
  </div>
</template>

<script setup lang="ts" name="LoveTalk">
  import {useTalkStore} from '@/store/loveTalk'

  const talkStore = useTalkStore()
    }
    // 第一种修改方式直接修改
    // useTalkStore.sum += 1

    // 第二种修改方式批量修改
    /* useTalkStore.$patch({
      sum:888,
      school:'尚硅谷',
      address:'北京'
    }) */

  // 第三种方式调用action里面的方法
  function getLoveTalk(){
    talkStore.getATalk()

</script>

<style scoped>
  .talk {
    background-color: orange;
    padding: 10px;
    border-radius: 10px;
    box-shadow: 0 0 10px;
  }
</style>

创建一个store组件

在loveTalk.ts中编写

import {defineStore} from 'pinia'
import axios from 'axios'
import {nanoid} from 'nanoid'

export const useTalkStore = defineStore('talk',{
  actions:{
    async getATalk(){
      // 发请求,下面这行的写法是:连续解构赋值+重命名
      let {data:{content:title}} = await axios.get('https://api.uomg.com/api/rand.qinghua?format=json')
      // 把请求回来的字符串,包装成一个对象
      let obj = {id:nanoid(),title}
      // 放到数组中
      this.talkList.unshift(obj)
    }
  },
  // 真正存储数据的地方
  state(){
    return {
      talkList:[
        {id:'ftrfasdf01',title:'今天你有点怪,哪里怪?怪好看的!'},
        {id:'ftrfasdf02',title:'草莓、蓝莓、蔓越莓,今天想我了没?'},
        {id:'ftrfasdf03',title:'心里给你留了一块地,我的死心塌地'}
      ]
    }
  }
})

main.ts中要引入pinia

import {createApp} from 'vue'
import App from './App.vue'
// 第一步:引入pinia
import {createPinia} from 'pinia'

const app = createApp(App)
// 第二步:创建pinia
const pinia = createPinia()
// 第三步:安装pinia
app.use(pinia)
app.mount('#app')

Vue 3,Pinia 是一个状态管理库,它提供了一种简单且可扩展的方式来管理应用程序的状态。下面是在Vue 3使用Pinia的基本用法示例: 1. 安装Pinia: ```bash npm install pinia ``` 2. 创建一个Pinia实例: ```javascript import { createPinia } from 'pinia' const pinia = createPinia() ``` 3. 在Vue应用程序的根组件使用Pinia: ```javascript import { createApp } from 'vue' import App from './App.vue' import { pinia } from './pinia' createApp(App).use(pinia).mount('#app') ``` 4. 创建一个Store: ```javascript import { defineStore } from 'pinia' export const useCounterStore = defineStore('counter', { state() { return { count: 0, } }, actions: { increment() { this.count++ }, decrement() { this.count-- }, }, }) ``` 5. 在组件使用Store: ```vue <template> <div> <p>Count: {{ count }}</p> <button @click="increment">Increment</button> <button @click="decrement">Decrement</button> </div> </template> <script> import { useCounterStore } from '@/stores/counter' export default { setup() { const counterStore = useCounterStore() return { count: counterStore.count, increment: counterStore.increment, decrement: counterStore.decrement, } }, } </script> ``` 这是一个简单的使用Pinia的示例,你可以根据自己的需求定义和使用不同的Store,并在组件引用和操作相应的状态和方法。Pinia还提供了更多高级功能,例如模块化、插件等,你可以查阅Pinia的文档以获取更详细的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值