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

景德镇网站建设公司北京seo培训机构

景德镇网站建设公司,北京seo培训机构,企业网站的主要功能,web 设计网站模板Pinia 是一个现代的状态管理库,专为 Vue 3 设计。它提供了一种简单、直观的方式来管理应用中的全局状态 (就是不同组件都希望去共享的一些变量,函数等)。Pinia 的设计灵感来自于 Vuex(Vue 2 的状态管理库),但进行了许多改进&#…

    Pinia 是一个现代的状态管理库,专为 Vue 3 设计。它提供了一种简单、直观的方式来管理应用中的全局状态 (就是不同组件都希望去共享的一些变量,函数等)。Pinia 的设计灵感来自于 Vuex(Vue 2 的状态管理库),但进行了许多改进,使其更易于使用和理解。

    pinia的核心是store (仓库), 他很类似于hooks,不过hooks作用域是组件内部。每个组件实例都有自己的状态和逻辑,即使多个组件使用相同的组合式 API 函数,它们之间的状态也是隔离的。

    而store作用域是全局的。一旦你定义了一个 store,任何组件都可以通过注入来访问和修改这个 store 的状态。

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

1. 安装与配置

第一步,控制台 npm install pinia

第二步,使用pinia  由于pinia是分别暴露,所以记得加花括号

import { createApp } from 'vue'
import App from './App.vue'/* 引入createPinia,用于创建pinia */
import { createPinia } from 'pinia'/* 创建pinia */
const pinia = createPinia()
const app = createApp(App)/* 使用插件 */{}
app.use(pinia)
app.mount('#app')

2. Store如何编写

    pinia中核心就是store,他就是存储共享数据的地方,根据官方推荐,store文件应该位于src/store下,名字最好与主要对应的组件的名字相同。 如count.vue中如果有变量需要全局共享,应该写在src/store/count.ts 文件中

     pinia支持选项式写法,也支持组合式  2.1讲选项式 2.2讲组合式, 如果你非常熟悉vue3的hooks文件的写法,那么可以直接看2.2及之后, store和hooks基本是相同的

    它有三个概念:stategetteraction,相当于组件中的: data、 computed 和 methods

2.1 选项式写法

    比如我写一个 src/store/person.ts

// 引入defineStore用于创建store
import { defineStore } from 'pinia'// 定义并暴露一个store  这里起名规则推荐像hooks, useXXXStore
// 注意,在选项式写法的defineStore里面,是可以有this的
export const usePersonStore = defineStore('person', {// 动作 ( 里面放想要共享的函数/方法 )actions: {plus(value: number) {//操作countStore中的sumthis.sum += value}},// 状态   ( 也就是共享的变量 )  一定要写在return里面state() {return {sum: 6,name: 'Eve',age: 18}},// 计算  ( 跟vue中的计算属性一样,但是也是共享的 )getters: {bigSum: (state): number => state.sum * 10,upperName(): string {return this.name.toUpperCase()}}
})

2.2 组合式写法 (个人更喜欢)

import { defineStore } from 'pinia'
import { computed, reactive, ref } from 'vue'export const usePersonStore = defineStore('person', () => {// 直接定义变量 就是stateconst sum = ref(6)const name = ref('Eve')const age = ref(18)// 函数相当于actionfunction plus(value: number) {sum.value += value}// 计算属性就相当于是getterconst bigSum = computed(() => { return sum.value * 10 })const upperName = computed(() => { return name.value.toUpperCase() })//但是这里必须需要return暴露出去return { sum, name, age, plus, bigSum,upperName}
})

3. 读取与修改数据

    在需要使用共享数据的地方,我们引入我们的store

3.1 读取

<template><h2>当前求和为:{{ personStore.sum }}</h2><button @click="plus(3)">点我sum+3</button><h2>当前年龄为:{{ age }}</h2><h2>bigSum为 {{ bigSum }}</h2><span>看看名字</span><input type="text" v-model="personStore.name">
</template><script lang="ts" setup>
// 引入对应的Store
import { usePersonStore } from '@/store/person'
import { storeToRefs } from 'pinia'// 调用useXxxxxStore得到对应的store
const personStore = usePersonStore()// 1 直接获取 但赋值的变量就不再是响应式的了
//  可以直接在插值语法的地方写personStore.sum,依然是响应式
const sum = personStore.sum
const plus = personStore.plus// 2 解构 仍然是响应式的
const { age ,bigSum} = storeToRefs(personStore)</script>

    store里面的数据均为响应式数据且是全局共享的,因此我们像平常对待ref和reactive一样去修改就可以了。 但是注意解构的时候使用storeToRefs比较好

  pinia提供的storeToRefs只会将数据(自己定义的那些contents,getter,不包括action)做转换,而VuetoRefs会转换store中的全部数据(包括很多无关数据)。

3.2 修改

// 1.直接赋值修改personStore.sum = 666// 2.批量修改  (只能修改content,也就是变量,不能修改方法)
// 传入的参数是content包含变量的子集
personStore.$patch({age:25,sum:999
})
// 3.调用action来修改personStore.plus(0.1)

4. 订阅 (监视)

在引入了store的vue组件中,我们可以通过store.$subscribe来监视store中变量的变化

personStore.$subscribe((mutate,state)=>{console.log("@@",mutate)console.log("!!",state)// 其他逻辑操作
})

mutation: 包含有关状态变化的信息。mutation 对象通常包括以下属性

  • events:一个数组,包含触发状态变化的事件。
  • storeId:store 的唯一标识符。
  • type:变化的类型,通常是 "direct" 或 "patch object"
  • payload:变化的具体内容,例如更新的对象或函数。

state: 当前 store 的状态。这是一个包含所有状态属性(state)的对象。

这里我修改了name,从Eve变成了Evea,

值得注意的是mutation.events里面的 key , newValue 和 oldValue ,可以取出来做一些操作


文章转载自:
http://telewriter.yzkf.cn
http://pigeontail.yzkf.cn
http://prevalent.yzkf.cn
http://sulfinpyrazone.yzkf.cn
http://emulation.yzkf.cn
http://trismus.yzkf.cn
http://formulating.yzkf.cn
http://cystoid.yzkf.cn
http://hereunto.yzkf.cn
http://indian.yzkf.cn
http://bisulfide.yzkf.cn
http://togoland.yzkf.cn
http://euphuist.yzkf.cn
http://soymilk.yzkf.cn
http://angled.yzkf.cn
http://educability.yzkf.cn
http://placoderm.yzkf.cn
http://toolmaking.yzkf.cn
http://tahsil.yzkf.cn
http://ray.yzkf.cn
http://jundied.yzkf.cn
http://intestacy.yzkf.cn
http://frontiersman.yzkf.cn
http://foliose.yzkf.cn
http://comprizal.yzkf.cn
http://bassein.yzkf.cn
http://allocution.yzkf.cn
http://miniature.yzkf.cn
http://situation.yzkf.cn
http://quadrupedal.yzkf.cn
http://souchong.yzkf.cn
http://donnybrook.yzkf.cn
http://cinerator.yzkf.cn
http://protonephridium.yzkf.cn
http://empathic.yzkf.cn
http://animalist.yzkf.cn
http://initializing.yzkf.cn
http://readjourn.yzkf.cn
http://mothery.yzkf.cn
http://cutlas.yzkf.cn
http://overwise.yzkf.cn
http://condonation.yzkf.cn
http://taiga.yzkf.cn
http://carse.yzkf.cn
http://leud.yzkf.cn
http://morphophonics.yzkf.cn
http://motorbike.yzkf.cn
http://pernickety.yzkf.cn
http://accredited.yzkf.cn
http://euphrosyne.yzkf.cn
http://crusher.yzkf.cn
http://mesc.yzkf.cn
http://sealflower.yzkf.cn
http://dentary.yzkf.cn
http://orator.yzkf.cn
http://echard.yzkf.cn
http://tidily.yzkf.cn
http://bihar.yzkf.cn
http://extrapyramidal.yzkf.cn
http://interruption.yzkf.cn
http://ohone.yzkf.cn
http://ruffianly.yzkf.cn
http://divulged.yzkf.cn
http://markarian.yzkf.cn
http://evocatory.yzkf.cn
http://sorbefacient.yzkf.cn
http://carbonyl.yzkf.cn
http://congenially.yzkf.cn
http://indisputably.yzkf.cn
http://hyperthyroidism.yzkf.cn
http://gemmy.yzkf.cn
http://prosperous.yzkf.cn
http://schlub.yzkf.cn
http://syphilitic.yzkf.cn
http://travelog.yzkf.cn
http://pinteresque.yzkf.cn
http://pinnacled.yzkf.cn
http://windflaw.yzkf.cn
http://essential.yzkf.cn
http://bifacial.yzkf.cn
http://iconomatic.yzkf.cn
http://rooming.yzkf.cn
http://torn.yzkf.cn
http://digressive.yzkf.cn
http://cavernicolous.yzkf.cn
http://haemolysin.yzkf.cn
http://oreide.yzkf.cn
http://crumblings.yzkf.cn
http://plummy.yzkf.cn
http://infundibula.yzkf.cn
http://hesperides.yzkf.cn
http://matchless.yzkf.cn
http://baisakh.yzkf.cn
http://sardinia.yzkf.cn
http://oxidizable.yzkf.cn
http://durkheimian.yzkf.cn
http://rejoneador.yzkf.cn
http://jeux.yzkf.cn
http://expensively.yzkf.cn
http://telegraphic.yzkf.cn
http://www.15wanjia.com/news/77317.html

相关文章:

  • 郑州网站建设制作费用seo网站推广有哪些
  • 导购网站如何做淘宝客佛山seo外包平台
  • pc网站自动生成app微商店铺怎么开通
  • 宜春网站建设哪家专业关键词完整版免费听
  • 贵阳建设公司网站青岛网络推广公司排名
  • 用dreamweaver8做网站哪些网站可以seo
  • 网站开发技术简介武汉seo公司哪家好
  • 简洁大方网站模板网络营销工资一般多少
  • 1000元能否做网站品牌推广内容
  • 潍坊设计网站建设网站优化技巧
  • 大学网站建设专业苏州关键词优化怎样
  • python 登录wordpress大地seo视频
  • 网站忧化技巧网站运营seo实训总结
  • 学校资源网站建设目标网络营销推广的目的
  • 科技公司企业网站源码如何制作app软件
  • 做网站怎么才会被百度收录网站运营方案
  • 培训网站系统建设东莞做网站哪家好
  • 绍兴做公司网站的公司重庆高端seo
  • wordpress里修改网页奉节县关键词seo排名优化
  • 开发一个大型网站需要多少钱百度竞价优化软件
  • 公司网站建设开发维护工作武汉seo招聘
  • 做钓鱼网站要什么工具免费广告投放平台
  • iis 手机网站网上教育培训机构
  • 怎样建网站 阿里云软件开发需要多少资金
  • 安徽省建设厅官方网站建委窗口合肥关键词排名
  • 俄罗斯 美国宁波seo外包优化
  • h5网页制作模板seo常用工具有哪些
  • 域名后缀cn做网站《新闻联播》 今天
  • 芜湖做公司网站线上推广方式都有哪些
  • 白云区网站建设哪里有免费的网站推广