Vue3+ts使用pinia传递数据,修改数据

本来是写的一个跳转页面的,需要同时传值,是两个毫不相干(A组件传到B组件)的组件,本来是用的params跳转的,但是官方已经修改了params跳转的传参的了,参数已经要显示在上方了,这是很致命的,咱们必然不能让客户看到这些参数!!

所以!我选择用pinia传值,还是用params跳转,我跳转的时候不传参就行了嘛,我要拿参数就去小菠萝里面拿不就行了吗(机智如我)

第一步:

在src下方的创建stores

第二步:

store中创建index.ts,在index.ts中写下面的代码:

import { createPinia } from 'pinia';

// 创建
const pinia = createPinia();

  
// 导出
export default pinia;

第三步:

同样在store中创建你所需要的名字的文件,我这里是叫newpagedata.ts

newpagedata.ts中的内容为:

import { defineStore } from 'pinia';

/**
 * 后端返回原始路由(未处理时)
 * @methods setCacheKeepAlive 设置接口原始路由数据
 */
export const useNewpageData = defineStore('newpagedata', {
	state: () => ({
		mid: 66,
		sp: 3,
		cz: 4,
		sd: 8
	}),

	getters: {

	},

	actions: {
		setmid(num: number) {
			this.mid = num
		},
		setsp(num: number) {
			this.sp = num
		},
		setcz(num: number) {
			this.cz = num
		},
		setsd(num: number) {
			this.sd = num
		}
	},
	 
});

在这里我要穿的参数是mid,sp,cz,sd,所以我给的state中的参数设置了这些,action中的方法是为了A组件传递实时数据

获取pinia中的数据:

B组件是接收数据的,代码如下:

// 首先需要引入一下我们刚刚创建的newpagedata
import {useNewpageData} from '/@/stores/newpagedata'
// 因为是个方法,所以我们得调用一下
const NewpageData = useNewpageData()
//直接就能获得你想要的数据
console.log(NewpageData.mid,"NewpageData.mid");

修改pinia中的数据:

在A组件中想把A组件的数据传递到pinia中,这样B组件才能实时的获得嘛(其中的miniValue,sp,cz,sd等等都是我设置的参数),代码如下:

<template>
   
   <el-button @click="routerJump(minivalue, sp, cz, sd)" type="primary">
开始轮播
</el-button>
               
</template>

// 首先需要引入一下我们创建的newpagedata
import {useNewpageData} from '/@/stores/newpagedata'
// 因为是个方法,所以我们得调用一下
const NewpageData = useNewpageData()

这个函数是上方button的点击事件,跳转的按钮,具体修改的地方因你们自己的项目而定
const routerJump = (minivalue: any, sp: number, cz: number, sd: any) => {
    NewpageData.setmid(minivalue)
    NewpageData.setsp(sp)
    NewpageData.setcz(cz)
    NewpageData.setsd(sd)
    if (minivalue.length <= 1) {
        ElMessage.error('请选择设备!');
        return
    }
    router.push({ name: 'newpage', params:{} })
}

以上就能修改pinia中的数据同时B组件也能得到试试修改的数据啦!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用 Pinia 获取数据,你需要先创建一个 Pinia store。在 store ,你可以定义你的数据状态和相关的操作。 首先,你需要安装并导入 Pinia: ```shell npm install pinia ``` 然后,创建一个 store 文件(例如 `store.js`): ```javascript import { createPinia, defineStore } from 'pinia' const pinia = createPinia() export const useDataStore = defineStore('data', { state: () => ({ data: null, }), actions: { fetchData() { // 在这里进行获取数据的操作 // 可以使用异步请求、调用 API 等方式获取数据 // 然后将数据保存到 `data` 状态 this.data = // 获取到的数据 }, }, }) export default pinia ``` 在上述代码,我们创建了一个名为 `data` 的 store,其包含一个名为 `fetchData` 的 action 和一个名为 `data` 的状态。在 `fetchData` 方法,你可以使用异步请求、调用 API 等方式获取数据,并将获取到的数据保存到 `data` 状态。 接下来,在你的应用程序使用该 store。在 Vue 组件,你可以通过 `useDataStore` 方法来获取 store 的实例,并调用方法: ```vue <template> <div> <button @click="fetchData">获取数据</button> <p v-if="data">{{ data }}</p> </div> </template> <script> import { useDataStore } from './store' export default { setup() { const dataStore = useDataStore() return { dataStore, fetchData: dataStore.fetchData, data: dataStore.data, } }, } </script> ``` 在上面的示例,我们通过 `useDataStore` 方法获取了 `data` store 的实例,并将其的 `fetchData` 方法和 `data` 状态绑定到组件。当点击按钮时,会调用 `fetchData` 方法来获取数据,并在页面展示获取到的数据。 这就是使用 Pinia 获取数据的基本流程。你可以根据自己的需求定制 store 的结构和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值