vuex如何实现数据持久化,vuex特性

  vuex如何实现数据持久化,vuex特性

  本文主要介绍vue和nuxt.js中vuex状态持久化的区别,有很好的参考价值。希望你能帮忙。如有错误或不足之处,请不吝赐教。

  

目录

   vue和nuxt中vuex状态持久化的区别. js vue使用Nuxtvue的Vuex的数据持久化,使用插件vuex-persistedstate持久化数据。插件是一个一维数组,否则它将解析错误。

  

vuex状态持久化在vue和nuxt.js的区别

  

Vue

  相信很多人都熟悉Vue中vuex状态的坚持。只需使用vuex-persisted状态或Vuex-persisted。

  这里推荐前者,因为vuex-persist是基于ts的,不配置webpack打包ts有问题,ie有问题。

  

使用

  从“vuex-persistedstate”导入persistedState

  导出默认的新Vuex。商店({

  //.

  插件:[persistedState()]

  })

  要更改会话存储模式:

  从“vuex-persistedstate”导入persistedState

  导出默认的新Vuex。商店({

  //.

  插件:[

  persisted state({ storage:window . session storage })

  ]

  })

  使用cookie存储:

  从“vuex-persistedstate”导入persistedState

  从“js-cookie”导入*作为cookie

  导出默认的新Vuex。商店({

  //.

  插件:[

  持续状态({

  存储:{

  getItem: key=Cookies.get(key),

  setItem: (key,value)=Cookies.set(key,value,{ expires: 7 }),

  remove item:key=cookies . remove(key)

  }

  })

  ]

  })

  

Nuxt

  因为每个请求都带有cookie,所以当您第一次进入页面时,cookie可以存储在nuxt服务器初始化方法nuxtServerInit中的vuex状态树中。

  随着服务器获取cookie,JS-cookies不再适用,所以需要使用cookie-universal-nuxt:

  npm安装cookie-universal-nuxt

  之后,在store/index.js中:

  //定义行为

  常量操作={

  //由nuxt提供,每次发送请求首先调用这个方法,第一个参数存储,这个方法的第二个参数是context。

  nuxtServerInit({commit},{app}) {

  常量数据={}

  data.accessToken=app。$cookies.get(accessToken )

  //更新vuex状态树

  提交(更新所有状态,数据)

  }

  }

  应用程序。$cookies.get这里是cookie-universal-nuxt提供的获取服务器端cookie的方法。

  相当于在上下文中使用req对象获取cookie :req.headers.cookie,然后解析出我们需要的对象值。

  这就是问题所在。既然有原生的vuex状态持久化方法,为什么要用nuxt方法?因为创建时window对象是不能使用的(包括cookie和loaclStorage),只能在mounted中使用,所以在页面加载的瞬间无法加载状态树,导致页面数据反馈慢。而nuxt的策略可以优化这个问题,非常人性化。

  

vue的vuex的数据持久化

  首先,vuex是什么?Vuex是一个集中的状态管理工具,当许多页面需要共享相同或多个值/状态时会用到它。但是vuex不同于cookie和localStroage,刷新页面时状态中的数据会丢失。因此,我们需要在vuex中持久化状态。

  

使用插件vuex-persistedstate对数据进行数据的持久化处理

  1.安装

  npm安装vuex-持续状态-保存

  在商店下的index.js下介绍

  从“vuex-persistedstate”导入createPersistedState

  使用:

  //数据的持久处理

  插件:[

  createPersistedState({

  //存储方法:localStorage、sessionStorage、cookies

  存储:window.cookie,//存储在cookie中

  //storage:window . sessionStorage存储到session storage。

  //如果不将默认存储写入localStorage

  //存储键的键值

  关键字:“存储”,

  呈现(状态){

  //要存储的数据:这个项目使用es6扩展操作符来存储state中的所有数据。

  返回{.state };

  //如果需要存储一些数据,需要单独取出。

  //返回{

  //仅保存状态为的评估数据

  //评估数据:val .评估数据

  //}

  })

  ]

  也可以使用多个插件

  

plugins要是一个一维数组不然会解析错误

  插件:调试?[createLogger(),创建持久化]:[创建持久化]

  补充,实际开发中,我们不会把所有的状态都只放在一个状态中,所以就有了模块

  当我们有多个状态管理状态的时候

  从“vue”导入某视频剪辑软件

  从" vuex "导入状态管理

  从导入用户/user.js //这是专门管理用户的

  从导入管理/admin.js //这是专门管理管理的

  Vue.use(Vuex)

  让storeRoot={

  状态:{

  },

  突变:{

  },

  动作:{

  },

  模块:{

  //在这里进行引用

  用户,

  管理

  }

  }

  导出默认的新Vuex .Store(storeRoot) //导出

  管理文件

  让管理员={

  命名空间:对,

  状态:{

  },

  突变:{

  },

  动作:{

  }

  }

  }

  导出默认管理员

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: