这里给大家分享我在网上学习总结出来的一些知识,希望对大家有所帮助

pinia

介绍

vue新一代状态管理库,相当于vuex

特性

1.像定义components一样定义store

2.支持ts

3.去除mutations,只有state,getters,actions(支持同步异步)

4.轻量级(1kb)

5.vuex是要有主入口进行统一导入,pinia可以分模块导入

pina简单使用

1.导入path

项目全局安装  @type/node

npm install @types/node --save-dev

2.config设置@指标

3.tsconfig.json设置@指标

4.导入pinia

项目全局安装  pinia

npm install pinia --save-dev

5.全局导入pinia

6.store内容设置案例

内容:

import { defineStore } from 'pinia'
export default defineStore('myGlobalState', {
state: () => {
return {
count: 1,
message: 'Hello world',
phone: 13811111199
}
},
actions:{
countAdd(){
this.count++
}
},
getters:{
countSum(state){
return state.count*2
}
}
})

7.demo调用方法展示

<script setup lang="ts">
import useCommonStore from '@/store/index'
import {storeToRefs} from "pinia";
const store = useCommonStore()
const data = storeToRefs(store)
// 常规方法修改内容
const storeAdd = ()=>{
data.count.value++
}
// $patch修改内容
const storeAddOne = ()=>{
store.$patch({
count:store.count+1
})
}
// $patch修改内容,内带对象
const storeAddTwo = ()=>{
store.$patch((state)=>{
state.count++
})
}
// $state修改整体内容
const storeRest = ()=>{
store.$state = {
count: 1,
message: 'Hello world',
phone: 13811111199
}
}
// $reset重置为初始内容
const storeRestOne = ()=>{
store.$reset()
}
// $subscribe监听整个仓库变化
store.$subscribe((mutation,store)=>{
console.log("mutation",mutation)
console.log("store",store)
})
</script> <template>
<div class="box">
<h2>
{{store.count}}
getters获取值{{store.countSum}}
<el-button @click="storeAdd" type="primary">添加一</el-button>
<el-button @click="storeAddOne" type="primary">添加二</el-button>
<el-button @click="storeAddTwo" type="primary">添加三</el-button>
<el-button @click="storeRest" type="primary">重置一</el-button>
<el-button @click="storeRestOne" type="primary">重置二</el-button>
<el-button @click="store.countAdd" type="primary">actions调用</el-button>
</h2>
</div>
</template> <style scoped lang="stylus">
.box
text-align center
line-height 150px
</style>

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

Vite+TS项目:论如何便捷的使用pinia的更多相关文章

  1. vue3.0+vite+ts项目搭建--初始化项目(一)

    vite 初始化项目 使用npm npm init vite@latest 使用yarn yarn create vite 使用pnpm pnpx create-vite 根据提示输入项目名称,选择v ...

  2. vue3.0+vite+ts项目搭建--基础配置(二)

    集成vue-router 使用yarn yarn add vue-router@next --save 安装完成之后在src目录下创建文件夹router/index.ts,创建完成之后需要在Vue-R ...

  3. vue3.0+vite+ts项目搭建--初始化项目

    使用yarn yarn create vite 使用pnpm pnpx create-vite(pnpm create vite + 项目名) 根据提示输入项目名称,选择vue框架,选择vue-ts, ...

  4. vue3.0+vite+ts项目搭建-分环境打包(四)

    分环境打包配置 新建.env.dev(或者.env) VITE_NODE_ENV = 'dev' VITE_HOST = 'http://local.host.com' 执行yarn dev ,控制台 ...

  5. vue3.0+vite+ts项目搭建(报错处理)

    报错一 warning package.json: No license field$ vue-tsc --noEmit && vite build 解决方案,添加这两行,只添加一个是 ...

  6. vue3.0+vite+ts项目搭建--vite.config.ts配置(三)

    vite.config.ts配置 配置路径处理模块 安装ts的类型声明文件 yarn add @types/node -D 通过配置alias来定义路径的别名 resolve: { alias: { ...

  7. vue3.0+vite+ts项目搭建-axios封装(六)

    封装方式一 import axios from 'axios' import qs from 'qs' import { Toast } from 'vant' import Lockr from ' ...

  8. vue3.0+vite+ts项目搭建-postcss-pxtorem 实现移动自适应(五)

    这里不考虑大屏,所以不做amfe-flexible的配置 首先是安装依赖 yarn add postcss-loader postcss-pxtorem -D yarn add autoprefixe ...

  9. Vite + TS 项目导入 jQuery 包时报错:Could not find a declaration file

    TypeScript 需要类型标注,当使用第三方库(除 ts 以外写的库,即 js)时,又缺少声明文件,我们需要引用它的声明文件,才能获得对应的代码补全.接口提示等功能.jQuery 不是 TypeS ...

  10. vite + ts 快速搭建 vue3 项目 以及介绍相关特性

    博客地址:https://ainyi.com/98 Vue3.0,One Piece 接下来得抽空好好学习了 vite 尤大在 Vue 3.0 beta 直播中推荐了 vite 的工具,强调:针对Vu ...

随机推荐

  1. Pandas练习

    背景介绍 本数据集包括了2015年至2017年我国36个主要一线城市.特区的一些年度数据,包括产值.人口.就业.教育.医疗.经济贸易.房地产投资等方面. 包含文件: 2015年国内主要城市年度数据.c ...

  2. 深入读懂 Kafka集群

    前言 概述 Kafka是一个多分区.多副本的分布式流处理平台,以高吞吐.可持久化.可水平扩展.支持流数据处理等多种特性被广泛使用. 应用场景 (1)缓冲削峰:有利于解决生产消息和消费消息的处理速度不一 ...

  3. NC200324 魔改森林

    题目链接 题目 题目描述 曾经有一道叫做迷雾森林的题目,然而牛牛认为地图中的障碍太多,实在是太难了,所以删去了很多点,出了这道题. 牛牛给出了一个n行m列的网格图 初始牛牛处在最左下角的格点上(n+1 ...

  4. Shell 特殊符号(变量)用法小结

    Shell | 特殊变量   $n 基本语法: $n (功能描述:n 为数字,$0 代表该脚本名称,$1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}) 例如: ...

  5. win32-ReadProcessMemory 的使用

    std::vector<std::byte> ReadBytes(PVOID address, SIZE_T length) { std::vector<std::byte> ...

  6. [2023本地存储方案](https://www.cnblogs.com/fangchaoduan/p/17608006.html)

    2023本地存储方案 本地存储方案 cookie 本地存储:有期限的限制,可以自己设置过期期限.在期限内,不论页面刷新还是关闭,存储的信息都还会存在. localStorage 本地持久化存储:页面刷 ...

  7. JavaScript的引入并执行-包含动态引入与静态引入

    JavaScript的引入并执行-包含动态引入与静态引入 JavaScript引入方式 html文件需要引入JavaScript代码,才能在页面里使用JavaScript代码. 静态引入 行内式 直接 ...

  8. iterables/generators/yield

    iterables # 当你创建了一个列表,你可以一个一个的读取它的每一项,这叫做iteration: >>> mylist = [1,2,3] >>> for i ...

  9. 图书管理系统---基于ajax删除数据

    book_list.html代码 {% load static %} <!DOCTYPE html> <html lang="en"> <head&g ...

  10. logstash部署及项目日志输出到ES

    目录 logstash简介 安装logstash logstash的基本语法 测试标准输入输出 测试输出到文件 测试输出到ES 指定配置文件启动 配置文件内容 后台运行脚本 参考 logstash简介 ...