• 本地存储 使用localStorage 存储数据


    新建项目(不知道怎么新建项目?参考文章:vue-cli3 搭建vue项目

    目录结构

    界面显示


    添加store.js

    export default {
      fetch: (key) => JSON.parse(window.localStorage.getItem(key)),
      save: (data, key) => window.localStorage.setItem(key, JSON.stringify(data)),
    };

    将两个操作localStorage的函数export出去。
    需要在使用的时候import进来。

    App.vue代码编写

    html

    <template>
    	<div id="app">
    		<div class="wrap">
    			<input type="text" v-model="keyword" @keydown.enter="addData" />
    			<ul v-if="list.length">
    				<li
    					v-for="(item, index) in list"
    					:key="index"
    					@click="changeState(index)"
    					:class="{complete: item.state}"
    				>{{ item.txt }}</li>
    			</ul>
    		</div>
    	</div>
    </template>

    script

    import store from "./common/store"; // 引入store模块
    
    const STORAGE_KEY = "my-key";
    
    export default {
    	name: "app",
    	data() {
    		return {
    			keyword: "",
    			list: store.fetch(STORAGE_KEY) ? store.fetch(STORAGE_KEY) : [], // 从本地存储中获取数据
    		};
    	},
    	components: {},
    	mounted() {},
    	methods: {
    		// 添加数据
    		addData() {
    			this.list.push({
    				txt: this.keyword,
    				state: false,
    			});
    			this.keyword = "";
    		},
    		// 点击后改变状态
    		changeState(index) {
    			this.list[index].state = !this.list[index].state;
    		},
    	},
    	watch: {
    		// 这里监听整个list数据的变化,避免每次修改数据的时候都需要进行本地存储
    		list: {
    			handler() {
    				store.save(this.list, STORAGE_KEY); // 写入本地存储
    			},
    			deep: true, // 切换为false之后,点击切换状态,刷新看效果,未触发watch。
    		},
    	},
    };
    

    css

    *{margin: 0;padding: 0;}
    .wrap { 80%;margin: 0 auto;}
    input {height: 30px; 100%;}
    li {
    	height: 30px;
    	line-height: 30px;
    	background: #e2e2e2;
    	margin: 4px 0;
    	cursor: pointer;
    	list-style-type: none;
    	padding: 0 10px;
    }
    li.complete {background: #5cce5c;color: #fff;}
  • 相关阅读:
    安卓内存的优化
    tcp和udp区别
    安卓中线程之间的通信方式(如何避免ANR)
    ArrayList和LinkedList区别
    Jmeter之接口测试
    C# 解析嵌套json
    C# 微信服务号模板消息中如何换行
    C# 对图片进行缩放拖动
    C# 使用Graphics绘制图片时发生闪烁的问题
    C# DevExpress的RepositoryItem设置UseParentBackground属性的办法
  • 原文地址:https://www.cnblogs.com/huipinpuzi/p/12168160.html
Copyright © 2020-2023  润新知