Vue todoList案例 优化之本地存储

测试代码

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <h1>浏览器本地存储案例</h1>
    <button onclick="saveData()">点击保存数据</button>

</body>
<script>
    function saveData(){
        window.localStorage.setItem("name","张三")
        window.localStorage.setItem("age","18")
        // 保存对象类类型测试
        let student = {'sid':10086,'sname':'张三','age':16}
        window.localStorage.setItem('stu',student)
    }
</script>
</html>

显示效果如下

说明

1- 本次存储是以字符串的方式保存所有数据的

2- 保存对象时,保存的是对象的toString() 方法所输出的内容,格式显示不友好,建议使用 json 来代替

修改代码

复制代码
// 保存对象类类型测试
let student = {'sid':10086,'sname':'张三','age':16}
// window.localStorage.setItem('stu',student)
window.localStorage.setItem('stu',JSON.stringify(student))

显示效果

本地存储的获取和删除

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <h1>浏览器本地存储案例</h1>
    <button onclick="saveData()">点击保存数据</button>
    <button onclick="readData()">点击读取数据</button>
    <button onclick="deleteData()">点击删除数据</button>
    <button onclick="deleteAllData()">点击删除所有数据</button>

</body>
<script>
    function saveData(){
        window.localStorage.setItem("name","张三")
        window.localStorage.setItem("age","18")
        // 保存对象类类型测试
        let student = {'sid':10086,'sname':'张三','age':16}
        window.localStorage.setItem('stu',JSON.stringify(student))
    }
    function readData(){
        console.log(localStorage.getItem("name"))
        console.log(localStorage.getItem("age"))
        let stu = localStorage.getItem("stu")
        console.log(JSON.parse(stu))
    }
    function deleteData(){
        localStorage.removeItem('name')
    }
    function deleteAllData(){
        localStorage.clear()
    }

</script>
</html>

以上是持久化存储,即使浏览器关闭再打开,也会存储到本地

会话级本地存储

sessionStorage

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <h1>浏览器本地存储案例</h1>
    <button onclick="saveData()">点击保存数据</button>
    <button onclick="readData()">点击读取数据</button>
    <button onclick="deleteData()">点击删除数据</button>
    <button onclick="deleteAllData()">点击删除所有数据</button>

</body>
<script>
    function saveData(){
        window.sessionStorage.setItem("name","张三")
        window.sessionStorage.setItem("age","18")
        // 保存对象类类型测试
        let student = {'sid':10086,'sname':'张三','age':16}
        window.sessionStorage.setItem('stu',JSON.stringify(student))
    }
    function readData(){
        console.log(sessionStorage.getItem("name"))
        console.log(sessionStorage.getItem("age"))
        let stu = sessionStorage.getItem("stu")
        console.log(JSON.parse(stu))
    }
    function deleteData(){
        sessionStorage.removeItem('name')
    }
    function deleteAllData(){
        sessionStorage.clear()
    }

</script>
</html>

TODO案例中的本地存储

深度监听 todos 变量

js 复制代码
 watch:{
    todos:{
      deep:true,
      handler(value){
        localStorage.setItem('todos',JSON.stringify(value))
      }
    }
  }

todos 的数据获取

js 复制代码
data() {
    return {
      todos:JSON.parse(localStorage.getItem('todos')) || []
    }
  },
相关推荐
天平5 小时前
油猴脚本创建webworker踩坑记录
前端·javascript·typescript
原则猫6 小时前
前端基础大厦
前端
陈随易7 小时前
编程语言级别的Skill市场,AI Agent 的未来形态
前端·后端·程序员
SoaringHeart8 小时前
Flutter进阶:基于 EasyRefresh 的下拉刷新封装 n_easy_refresh_mixin.dart
前端·flutter
IT_陈寒10 小时前
Vite的热更新突然不香了,排查三小时差点砸键盘
前端·人工智能·后端
子兮曰11 小时前
Agency-Agents 深度解析:400+ AI 专家的"梦之队"如何重塑开发工作流
前端·后端·vibecoding
山河木马11 小时前
渲染管线-计算得到gl_Position(顶点着色器)之后续GPU流程
javascript·webgl·图形学
竹林81811 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript
妙码生花12 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
Awu122712 小时前
⚡从零开发 Agent CLI(五)实现一个可治理、可扩展的工具系统
前端·人工智能·claude