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

罗田建设局网站网站开发建设用的软件

罗田建设局网站,网站开发建设用的软件,论坛网站模板下载,app开发公司有哪些部门一、简介 pinia是 vue3 新的状态管理工具#xff0c;简单来说相当于之前 vuex#xff0c;它去掉了 Mutations 但是也是支持 vue2 的#xff0c;需要的朋友可以参考下 二、使用方法 1.安装 npm install pinia -S 2..引入 import { createPinia,PiniaPluginContext } from p…一、简介 pinia是 vue3 新的状态管理工具简单来说相当于之前 vuex它去掉了 Mutations 但是也是支持 vue2 的需要的朋友可以参考下 二、使用方法 1.安装 npm install pinia -S 2..引入 import { createPinia,PiniaPluginContext } from pinia import { createApp,toRaw } from vue import App from ./App.vue const store createPinia() const app   createApp(App) app.use(store) app.mount(#app) 3.创建store文件夹 在src目录下面创建store文件 注意 pinia 不需要创建 modules 文件来区分模块化这是它和 vuex 的区别。 store/index.ts import {defineStore } from pinia import {Names} from ./store-name type User {name:string,age:number }const result:User {name:xiaochen,age:888, }const asyncResult:User {name:异步名字,age:999, }const Login ():PromiseUser {return new Promise((resolve) {setTimeout((){resolve(asyncResult)},2000)}) } //第一个参数 命名空间唯一值 export const useTestStore defineStore(Names.TEST,{state:(){return{current:122,name:xiaochen2,user:User{},asyncUser:User{},}},//相当于computed 修饰一些值 有缓存的getters:{newName ():string{return $-${this.name}-${this.getUserAge}},getUserAge():number{return this.user.age || 1}},//methods 可以做同步 异步也支持 提交stateactions:{// setCurrent(num:number){// this.current num// },//同步setUser(){this.user result},//异步async getUser(){const resultList await Login()this.asyncUser resultListthis.setName(超级帅的飞机)//相互调用方法this.setAge(6666)//相互调用方法},setName (name:string){this.name name},setAge (age:number){this.user.age age}}}) 命名空间的唯一值 export const enum Names {TEST TEST,BASE BASE } 4.使用Pinia import { useTestStore} from ../store; const sinaTest useTestStore(); 5.修改数据(五种方法) 方法1:直接改变 div classcontainer     Pinia:{{ sinaTest.current }} -- {{ sinaTest.name }}     button clickchange改变/button /div const change () {   sinaTest.current; }; 方法2:利用patch直接改变 const change () {   sinaTest.$patch({     current: 888,     name: 黑丝,   }); }; 方法3利用$patch传递参数 const change () {   //可以写工厂函数   sinaTest.$patch((state) {     state.current 999;     state.name 迪丽热巴;   }); }; 方法4: 利用$state修改(有弊端不推荐) const change () {   //可以写工厂函数   sinaTest.$state {     current: 2000,     name: 134,   }; }; 方法5: 通过actions去改变 const change () {   sinaTest.setCurrent(852); }; 这里只是简单了一些修改的方法 具体使用还是得结合业务场景去使用具体了解可以看看Pinia官方文档 三、持久化存储 pinia 和 vuex 一样数据是短时的只要一刷新页面数据就会恢复成初始状态为了避免这个问题可以对其采用持久化保存方法。 持久化保存的原理是在 pinia 中数据更新时同步保存到 localStorage 或 sessionStorage 中刷新后从本地存储中读取数据 下面介绍两种实现的方法 一手写 1.自己手写一个实现持久化(在main.ts写) 首先我们先了解一下pinpa能获取到的参数 通过上面的打印我们了解到对应的数据存在哪里我们即可以手写 //先手写我们存储数据的localStorage const getStorage (key:string) {return localStorage.getItem(key) ? JSON.parse(localStorage.getItem(key) as string):{}}//存储数据const setStorage (key:string,value:any) {localStorage.setItem(key,JSON.stringify(value)) //value可能是对象或者数组 所以JSON.stringify需要这个转换成字符串 [1,2,3] [1,2,3]} 2.手写我们插件函数(柯里化优化):柯里化就是将一个多参数的函数  转换成单参数的函数 解析:options?.key ??__piniaKey__          当key不传的时候默认是__piniaKey__ 传的时候就是传的数据。下面使用的时候有介绍 空值合并运算符 ?? 是一个逻辑操作符如果左侧的表达式为 null或者 undefined 时返回其右侧表达式否则返回左侧表达式。 //函数柯里化 柯里化就是将一个多参数的函数 转换成单参数的函数 const piniaPlugin (options:Options) {return (context:PiniaPluginContext){ //拿取到pinpa的参数console.log(context,context);const {store} context //解构我们需要的storeconst data getStorage(${options?.key ??__piniaKey__}-${store.$id}) //获取到keyconsole.log(data,data);//可以通过$subscribe监测到store数据变化store.$subscribe((){// 每当它发生变化时将整个状态持久化到本地存储//${options?.key ??__piniaKey__}-${store.$id} 唯一值keysetStorage(${options?.key ??__piniaKey__}-${store.$id},toRaw(store.$state)) //store.$state proxy对象 toRaw把它转为原始对象})return{...data}} } 3.使用我们的插件 store.use(piniaPlugin({key:pinia //传值key过去 存储用这个名字 })) 4.效果如下 二、使用插件 1.安装插件 npm install pinia-plugin-persist 2.引入插件 import piniaPersist from pinia-plugin-persist pinia.use(piniaPersist) 3.使用插件 ①设置key指定保存内容 export const useBaseStore defineStore(Names.BASE, {state: () {return {baseUrl: http://localhost:9090,BaseCurrent: 0,};},persist: {enabled: true, // true 表示开启持久化保存strategies: [{key: base,storage: localStorage,paths: [BaseCurrent,baseUrl]},],},//相当于computed 修饰一些值 有缓存的getters: {},//methods 可以做同步 异步也支持 提交stateactions: {}, }); //第一个参数 命名空间唯一值②你甚至可以对不同数据设置不同的本地存储方式。 export const useBaseStore defineStore(Names.BASE, {state: () {return {baseUrl: http://localhost:9090,BaseCurrent: 0,testType:test,};},persist: {enabled: true, // true 表示开启持久化保存strategies: [{key: base,storage: localStorage,paths: [BaseCurrent,baseUrl]},{key: base2,storage: sessionStorage,paths: [testType]},],},//相当于computed 修饰一些值 有缓存的getters: {},//methods 可以做同步 异步也支持 提交stateactions: {}, }); //第一个参数 命名空间唯一值③保存到 cookie 保存到 cookie 中当然也是可以的不过需要手动添加 cookie 的保存方式同样此处也是推荐使用插件 js-cookie 来完成。一般用于存储token npm install js-cookie import Cookies from js-cookie //存储在cookie const cookiesStorage: Storage {setItem(key, state:any) {console.log(state,state);return Cookies.set(key, state, { expires: 3 }); // 设置有效期 3 天不设置默认同 sessionStorage 有效期一致},getItem(key) {return JSON.stringify({accessToken: Cookies.get(key),});},length: 0,clear: function (): void {throw new Error(Function not implemented.);},key: function (index: number): string | null {throw new Error(Function not implemented.);},removeItem: function (key: string): void {throw new Error(Function not implemented.);} }export const useBaseStore defineStore(Names.BASE, {state: () {return {baseUrl: http://localhost:9090,BaseCurrent: 0,testType:test,token:12314,};},persist: {enabled: true, // true 表示开启持久化保存strategies: [{key: base,storage: localStorage,paths: [BaseCurrent,baseUrl]},{key: base2,storage: sessionStorage,paths: [testType]},{key: tokenSave,storage: cookiesStorage,paths: [token]},],},//相当于computed 修饰一些值 有缓存的getters: {},//methods 可以做同步 异步也支持 提交stateactions: {}, }); //第一个参数 命名空间唯一值
http://www.dnsts.com.cn/news/112875.html

相关文章:

  • 做网站的预算表一些有趣的网站
  • 苏州专业建设网站网页设计对板式的要求
  • wordpress网站打开满wordpress打不开首页
  • 石家庄学做网站建设培训学校鄞州区网站建设报价
  • wap网站开发协议搜了网推广效果怎么样
  • 北京网站优化哪家公司好硬件开发简历
  • 官方网站域名备案单页企业网站模板
  • 网站调研方法有哪些内容西安有什么好玩的地方适合年轻人
  • 网站定制合同和模版的区别建筑行业公司
  • 我想在购物网站做代理平面设计比较好的网站
  • asp网站变慢宝安logo设计
  • 网站后台数据库丢失新手做网站遇到的问题以及解决方案
  • 网站重构工程师深圳创业补贴
  • 丰城市城乡规划建设局网站西安网址
  • 网站策划包括哪些内容wordpress注册不上
  • 网站建设模板代码下载工业软件开发需要学什么专业
  • 建设网站后如何做后台网站主视觉
  • 建设网站选什么地方的主机王也踏青图是哪一集
  • 深圳工程建设交易服务中心网站直播app下载汅api免费下载
  • 关于校园网站建设的建议宁波seo做排名
  • 网站ui设计要点html5网站链接标签
  • 贵阳做网站设计天津微网站建设
  • 怎样可以做网站网站 展示
  • 怎么做淘宝联盟网站制作互联网推广平台
  • 郑州网站优化_郑州网站推广_河南网站建设公司_seo外包顾问服务中文小说网站建设与维护
  • 12380 举报网站建设网站建设福建
  • 网站页面构架更换网站ico
  • 宜宾移动网站建设大学网页设计与制作教材
  • 数字媒体应用 网站开发新手如何自学编程
  • 合肥做网站工作室重庆免费网站制作