toto11luv 2023-03-31 14:59 采纳率: 62.5%
浏览 19
已结题

学习vue时关于localStorage的问题

学习vue的时候讲到了localStorage 在刷新过后读取localStorage是可以读取到的但是页面上用localStorage的地方就没有用上
代码如下:

<template>
    <div id="root">
        <div class="todo-container">
            <div class="todo-wrap">
                <MyHeader :addTodo="addTodo"/>
                <MyList :todos="todos" :checkTodo="checkTodo" :deleteTodo="deleteTodo"/>
                <MyFooter :todos="todos" :checkAllTodo="checkAllTodo" :clearAllTodo="clearAllTodo"/>
            </div>
        </div>
    </div>
</template>

<script>
    // 引入School组件
    import MyHeader from './components/Myheader.vue'
    import MyList from './components/Mylist.vue'
    import MyItem from './components/Myitem.vue'
    import MyFooter from './components/Myfooter.vue'
    export default {
        name:'App',
        components:{
            MyHeader,
            MyList,
            MyItem,
            MyFooter
        },
        data() {
            return {
                todos:JSON.parse(localStorage.getItem("value")) || []
            }
        },
        methods: {
            // 添加todo
            addTodo(todoObj){
                this.todos.unshift(todoObj)
            },
            // 取消勾选todo
            checkTodo(id){
                this.todos.forEach((todo)=>{
                    if(todo.id === id) todo.done = !todo.done
                })
            },
            // 删除
            deleteTodo(id){
                this.todos = this.todos.filter(todo => todo.id !==id)
            },
            // 取消或者选择全选
            checkAllTodo(done){
                this.todos.forEach((todo)=>{
                    todo.done = done
                })
            },
            // 清除已经完成的todo
            clearAllTodo(){
                this.todos = this.todos.filter((todo)=>{
                    return !todo.done
                })
            }
        },
        watch: {
            todos(value){
                localStorage.setItem('todos',JSON.stringify(value))
            }
        },
    }
</script>

<style>
    body {
        background: #fff;
    }

    .btn {
        display: inline-block;
        padding: 4px 12px;
        margin-bottom: 0;
        font-size: 14px;
        line-height: 20px;
        text-align: center;
        vertical-align: middle;
        cursor: pointer;
        box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
        border-radius: 4px;
    }

    .btn-danger {
        color: #fff;
        background-color: #da4f49;
        border: 1px solid #bd362f;
    }

    .btn-danger:hover {
        color: #fff;
        background-color: #bd362f;
    }

    .btn:focus {
        outline: none;
    }

    .todo-container {
        width: 600px;
        margin: 0 auto;
    }
    .todo-container .todo-wrap {
        padding: 10px;
        border: 1px solid #ddd;
        border-radius: 5px;
    }
</style>

img


  • 写回答

2条回答 默认 最新

  • 哇,女前端哎! 2023-03-31 15:05
    关注

    img


    取值错误

    
    todos:JSON.parse(localStorage.getItem("todos")) || []
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月31日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来