首页 > 编程语言 >Java登陆第四十三天——Pinia

Java登陆第四十三天——Pinia

时间:2024-04-17 15:16:18浏览次数:17  
标签:vue Java Pinia 四十三天 js pinia import Store

到目前一共学习了两种传参方式。
	1.组件传参
	2.路由传参
这两种传参方式并不好用,所以出现了Pinia

Pinia平替了Vuex,而且比它更优秀。

Pinia是Vue衍生的生态系统之一,所以,在使用它前需要导入依赖。

npm i pinia

简单地说,Pinia就是共享数据。各个.vue组件可以利用Pinia更好的完成数据传递。(Vuex同)

Store

Pinia官网

Pinia设计了一个对象Store

Store是一个保存状态和业务逻辑的实体,它承载着全局共享的数据。每个组件都可以读取和写入它。

它有四个属性:

  1. state
    • 存放的数据,等价于属性(字段)。
  2. getter
    • 对属性的计算操作,一般不对数据进行修改。
  3. actions
    • 定义修改数据的函数。

Pinia提供了两个函数**defineStore()和createPinia()

  • defineStore():定义Store对象。
  • createPinia():实例化Pinia。(一般在mian.js中绑定)

Pinia栗子

1.创建src\store\pinia.js

//定义Sotre对象。
import {defineStore} from 'pinia';

//ES6的分别导出,官方推荐命名use开头 Store结尾
export const useTestStore = defineStore({
    //在Pinia中,state 被定义为一个初始化数据的函数。
    state:function () {
        return{
         name:"张三",
         age:19
        }
    },
    //对属性的计算操作,一般不对数据进行修改。
    getters:{
        getAge(){ return this.age+1 }
    },
    //定义修改数据的函数。
    actions:{
        initAge(){ this.age=18 }
    }
})

2.绑定Pinia

import {createApp} from 'vue'
import App from './App.vue'
import {createPinia} from 'pinia'

let app = createApp(App)
const p = createPinia();
//绑定pinia对象
app.use(p);
//挂载试图
app.mount("#app");

至此,哪个组件需要读取数据就导入src\store\pinia.js即可。

3.组件编写

left.vue

<script setup>
import {useRoute} from 'vue-router'
import {useTestStore} from '../store/pinia.js'

let t = useTestStore();
</script>

<template>
  <h3>我是left.vue,负责修改数据</h3>
  姓名:<input type="text" v-model="t.name">
  年龄:<input type="text" v-model="t.age">
  <button @click="t.initAge()">初始化年龄</button>
</template>

<style scoped>
</style>

right.vue

<script setup>
import {useRoute} from 'vue-router'
import {useTestStore} from '../store/pinia.js'

let t = useTestStore();
</script>

<template>
  <h3>我是right.vue,负责展示数据</h3>
  <p v-text="t"></p>
  <ul>
    <li v-text="t.name"></li>
    <li v-text="t.age"></li>
    <li v-text="t.getAgeAdd"></li>
  </ul>
</template>

<style scoped>
</style>

App.vue

<script setup>
import {useRouter} from 'vue-router'
import Left from './components/left.vue'
import Right from './components/right.vue'
</script>

<template>
  <Left></Left>
  <Right></Right>
  <h3>APP尾部</h3>
</template>

<style scoped>
</style>

4.效果展示

image

getter中的getAgeAdd()通过计算后,会被Pinia变成键值对属性。而非方法。

标签:vue,Java,Pinia,四十三天,js,pinia,import,Store
From: https://www.cnblogs.com/rowbed/p/18140743

相关文章

  • KMP算法 Java实现
    Problem:28.找出字符串中第一个匹配项的下标目录解题方法思路构建next数组回溯查找复杂度Code解题方法构建next串回溯查找next串,最后下标思路通过最大前缀后缀能找到下一次未查找到后要回溯的位置构建next数组无论如何第一个数的下一次回溯位置肯定是0,因此next[......
  • 2.JAVA入门 了解JAVA 配置环境
    Java入门Java特性和优势简单性:Java语言设计简洁,易于学习和使用。它摒弃了许多复杂的特性和语法,使得编程变得更加直观和容易上手。面向对象:Java是一种纯粹的面向对象编程语言,所有的代码都以类和对象的形式组织。这种面向对象的特性使得代码更加模块化、可重用性更高,并且更容易......
  • day14_我的Java学习笔记 (常用API、Lambda、常见算法)
    1.常用API1.1Date类【案例】:计算出当前时间往后走1小时121秒之后的时间是多少。1.2SimpleDateFormat【练习】:秒杀活动1.3Calendar2.JDK8新增日期类2.1概述、LocalTime/LocalDate/LocalDateTime2.2Ins......
  • IDEA2023版本创建Spring项目只能勾选17和21却无法使用Java8的完美解决方案
    参考:https://www.jb51.net/program/308256k4b.htm方案一:替换创建项目的源我们只知道IDEA页面创建Spring项目,其实是访问springinitializr去创建项目。故我们可以通过阿里云国服去间接创建Spring项目。将https://start.spring.io/或者http://start.springboot.io/替换为https://......
  • day12_我的Java学习笔记 (package包、权限修饰符_private+缺省+protected+public、fin
    1.包IDEA配置自动导包:2.权限修饰符同一个类中的,【private、缺省、protected、public】都可以访问同一个包中的其他类,【private】不可以访问,【缺省、protected、public】都可以访问不同包下的无关类,【private、缺省、protected】都不可以访问,只有【public......
  • 2.JavaScript
    变量/对象声明var-绑定到window,无法清理,且重复声明会污染全局(尽量不用)let-只在let命令所在的代码块{}内有效const-与let类似但它是只读常量,值不可修改参考视频增删改查letobj={}//创建对象obj.a=1//新增属性a,值为1obj['1']=1//新增属性1,值为1(可以在属性为数......
  • 控制台连接数据库成功,驱动也导入了没问题,但tomcat的servlet启动会报错。报错信息:java.
    查了很多资料这个报错信息是因为驱动导入不成功,但我确定我已经导入了,因为我在控制台输出了出来。找了很久,发现了这个小问题。原因是我在Eclipse中创建是一个标准的Web工程,它是自带lib文件夹的,然后我自己又自建了一个lib文件夹用来放驱动,结果就像这样报出一个错误!解决方案:......
  • java基础模块一
    1java基础(来自B站尚硅谷)1.1字符编码问题1,编码:保存数据的过程2.解码:读数据的过程3.注意:a.编码解码遵守的编码规范必须一致b.常见的两个编码规范: GBK:专门为仲文设计的编码ANSI代表的是GBK一个中文汉字在GBK中占2个字节 UTF-8:一个中文......
  • java JIT优化
    JIT优化1.公告子表达式消除如果一个表达式的出现多次,并且每次的参数值没有改变,那只需要计算一次,接下来的碰到这个表达式,都会直接取上一次计算的结果如:intx=a*b+c+d*(a*b);  //a*b是一个公共子表达式,计算了一遍以后,第二次的时候,这个子表达式的参数值都没有变化,所以直接使......
  • Java开发小白入门前的工具安装
    学习过程是痛苦的,我们要学会苦中作乐!关于java语言的基本介绍百度上都有,拉出来的都很详细,不做过多的介绍,我想写的主要是以干活为主,大家一起学习java的知识。编程的学习主要还是要靠自己勤劳的双手------敲代码,一遍又一遍的把代码敲出来,直到它成为你本能的知识储备。准备,上菜了......