当前位置: 首页 > article >正文

Vue3状态管理

1. 状态管理概述

理论上来说,每一个 Vue 组件实例都已经在“管理”它自己的响应式状态了。

<script setup>
import { ref } from 'vue'

// 状态
const count = ref(0)

// 动作
function increment() {
  count.value++
}
</script>

<!-- 视图 -->
<template>{{ count }}</template>

它是一个独立的单元,由以下几个部分组成:

  • 状态:驱动整个应用的数据源;
  • 视图:对状态的一种声明式映射;
  • 交互:状态根据用户在视图中的输入而作出相应变更的可能方式。

2. pinia

2.1 pinia简介

pinia是一个状态管理库,由Vue核心团队维护,对Vue 2和Vue 3都可用。

2.2 搭建pinia环境

(1)安装

npm i pinia

(2)配置

import App from './App.vue'

// 第一步,引入pinia
import { createPinia } from 'pinia'

// 第二步,创建pinia
const pinia = createPinia()
const app = createApp(App)

// 第三步,使用pinia
app.use(pinia)
app.mount('#app')

3.  存储+读取数据

Store是一个保存:状态、业务逻辑 的实体,每个组件都可以读取、写入它。

它有三个概念:stategetteraction,相当于组件中的:datacomputedmethods

3.1 count.ts

src/store/count.ts

// 引入defineStore用于创建store
import {defineStore} from 'pinia'

// 定义并暴露一个store
export const useCountStore = defineStore('count',{
  // 动作
  actions:{},
  // 状态
  state(){
    return {
      sum:6
    }
  },
  // 计算
  getters:{}
})

3.2 talk.ts

src/store/talk.ts

// 引入defineStore用于创建store
import {defineStore} from 'pinia'

// 定义并暴露一个store
export const useTalkStore = defineStore('talk',{
  // 动作
  actions:{},
  // 状态
  state(){
    return {
      talkList:[
        {id:'yuysada01',content:'你今天有点怪,哪里怪?怪好看的!'},
     		{id:'yuysada02',content:'草莓、蓝莓、蔓越莓,你想我了没?'},
        {id:'yuysada03',content:'心里给你留了一块地,我的死心塌地'}
      ]
    }
  },
  // 计算
  getters:{}
})

3.3 组件中使用state中的数据

<template>
  <h2>当前求和为:{{ sumStore.sum }}</h2>
</template>

<script setup lang="ts" name="Count">
  // 引入对应的useXxxxxStore	
  import {useSumStore} from '@/store/sum'
  
  // 调用useXxxxxStore得到对应的store
  const sumStore = useSumStore()
</script>
<template>
	<ul>
    <li v-for="talk in talkStore.talkList" :key="talk.id">
      {{ talk.content }}
    </li>
  </ul>
</template>

<script setup lang="ts" name="Count">
  import axios from 'axios'
  import {useTalkStore} from '@/store/talk'

  const talkStore = useTalkStore()
</script>


http://www.kler.cn/a/355147.html

相关文章:

  • 4K分页机制相关介绍
  • 【C语言】循环结构-for循环
  • c++数据结构算法复习基础-- 5 -- 线性表-双向链表/双向循环链表-常用操作接口-复杂度分析
  • k3s安装指定版本以及离线安装(docker)
  • 多签机制简明理解及实例说明
  • GitHub每日最火火火项目(10.18)
  • 前端原型链:探索 JavaScript 中的继承奥秘
  • 宝塔下如何应对检测到存在待处理的恶意文件提醒
  • Android 通过计算器暗码启动应用
  • TCP/IP 协议【四次挥手】简要说明
  • oracle归档日志爆满问题处理
  • 遇到“mfc100u.dll丢失”的系统错误要怎么处理?科学修复mfc100u.dll
  • SAM应用:医学图像和视频中的任何内容分割中的基准测试与部署
  • 安卓-广播
  • 第J3-1周:DenseNet算法实现乳腺癌识别
  • spring-boot学习(2)
  • 从美的第二届远见者大会看AI与能源转型的未来
  • 牛客习题—线性DP 【mari和shiny】C++
  • Java后端基础自测
  • 【人工智能/计算机工程/大数据】第五届人工智能与计算工程国际学术会议(ICAICE 2024,2024年11月8-10日)