vue+localStorage+收藏+解析url参数 实例解析

2024-09-01 02:48

本文主要是介绍vue+localStorage+收藏+解析url参数 实例解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

商家收藏这一功能为例:
1. 首先App.vue中根据url 设置好 商家的id

<script>
import {urlParse} from './common/js/util.js'
import Header from './components/header/Header.vue'const err_OK = 0;export default{data(){return { /* 商家默认有id */seller:{id:(()=>{/* 从地址栏中的url中通过urlParam函数解析,得到id */let queryParam = urlParse();console.log(queryParam);return queryParam.id;})()}}},created(){this.$http.get('./api/seller?id='+this.seller.id).then((res)=>{var resData  = res.data;if(resData.errno  === err_OK){/* this.seller =  resData.data; 会覆盖掉id *//* 防止把id覆盖掉,使用es6的一个语法:扩展了对象的属性,在原来的基础上添加response.data的值,不会覆盖掉原来的id属性 */this.seller = Object.assign({},this.seller,resData.data);console.log(this.seller.id);}},(res)=>{alert(res.status);});},components: {'v-header': Header}
}
</script>

2、seller.vue: 设置和读取localstorage

<div class="favorite" @click="toggleFavorite($event)"><span class="icon icon-favorite" :class="{'active':favorite}"></span><div class="text">{{favoriteText}}</div>
</div>----
import {saveToLocal,loadFromLocal} from '../../common/js/store.js'
export default{props:{seller: {type: Object}},data(){return{favorite: (()=>{return loadFromLocal(this.seller.id,'favorite',false);})()}},computed:{favoriteText(){return this.favorite? '已收藏': '收藏';}},methods:{toggleFavorite(event){if(!event._constructed){return;}this.favorite = !this.favorite;saveToLocal(this.seller.id, 'favorite', this.favorite);}}
}

3、保存的读取localStorage的接口—-store.js:

/*** [保存数据到localstorage]* @param  {[Number]} id  [商家id]* @param  {[type]} key [属性值]* @param  {[type]} value [value值]* @return {[type]}       [description]*/
export function saveToLocal(id, key, value) {let seller = window.localStorage.__seller__;if (!seller) {seller = {};seller[id] = {};} else {seller = JSON.parse(seller);if (!seller[id]) {seller[id] = {};}}seller[id][key] = value;window.localStorage.__seller__ = JSON.stringify(seller);
};
/*** [从localstorage读取数据]* @param  {[Number]} id  [商家id]* @param  {[type]} key [属性值]* @param  {[type]} def [属性值的默认取值,当没有保存key时,返回默认值]* @return {[type]}     [属性值对应的value值]*/
export function loadFromLocal(id, key, def) {let seller = window.localStorage.__seller__;if(!seller){return def;}seller = JSON.parse(seller);if(!seller[id]){return def;}let ret = seller[id][key];return ret || def;
}

4.util.js:

/*** [解析url参数]* @example ?id=12345&a=1* @return Object {id:12345,a:1}*/
export function urlParse(){let url = decodeURIComponent(window.location.search);let obj = {};let reg = /[?&][^?&]+=[^?&]+/g;//['?id=12345','a=1']let arr = url.match(reg);if(arr){arr.forEach((item)=>{let  tempArr =  item.substring(1).split('=');let key = decodeURIComponent(tempArr[0]);let value = decodeURIComponent(tempArr[1]);obj[key] = value;})}return obj;
}

这篇关于vue+localStorage+收藏+解析url参数 实例解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125731

相关文章

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置