vue.js - vuex 持久化状态:存储类实例。有什么最佳实践吗?
问题描述
两者vuex-persist
或vuex-persistedstate
使用 将状态存储在 localStorage 中JSON.stringify
。这意味着一个对象的所有功能都被剥离了。如果对象是类实例,这意味着该实例无法自动恢复。恕我直言,这是有问题的,因为应用程序状态通常由类实例组成。
我不确定如何进行。我的 vuex 状态主要由类实例组成。关于持久状态的最佳实践是什么?
解决方案
所有使用浏览器存储的包都受限于存储的工作方式。会话存储或本地存储由键/值对值组成
要解决这样的问题,您必须在应用程序初始化时反序列化数据。
您要实现的目标的一个相当简单的示例:
假设您有一个 User 类
class User {
constructor(name) {
this.name = name;
}
greetings() {
console.log(`Hello ${this.name}`)
}
}
并且您的商店中有一组用户,并将其持久化到您的本地存储中:
const state = {
users: [User, User, User]
}
您现在可以利用Vuex中的插件:
const userSerializer = (store) => {
const serializedUsers = store.users.map(u => new User(u.name));
// you would have to define this mutation
store.commit('setUsers', serializedUsers)
}
推荐阅读
- c# - LINQ 查询未统计日期时间验证
- javascript - 轮播项目超过高度..或高度未调整到轮播项目
- python - 如何从python中的字典键中删除点
- java - 空手道:如何停止在 intelij IDE 中使用控制台查看调试信息
- google-sheets - 数组公式中的第三个参数用于检查最高(最大)的出现,但前提是其他条件首先为真
- android - AltBeacon 正在停止信标扫描。但继续扫描
- amazon-web-services - 查询条件缺少关键架构元素:dynamoDB Scala 中的 source_transaction_id
- apollo-federation - GraphQL-Mesh 和 Apollo-Federation 有什么区别?
- r - 如何修复:kmeans$cluster 中的错误:“闭包”类型的对象不是子集?
- python - 如何让 PyLance 在 VSCode 中正确解析 NumPy 样式的文档字符串?