vue3开发前端表单缓存自定义指令,移动端h5必备插件
2024/5/9 0:02:42
本文主要是介绍vue3开发前端表单缓存自定义指令,移动端h5必备插件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
开发背景
公司需要开发一款移动端应用,使用vue开发,用户录入表单需要本地缓存,刷新页面,或者不小心关掉重新进来,上次录入的信息还要存在。
这里有两种方案,第一种就是像博客平台一样,实时保存暂存文件到后端。每隔1-2秒调一次保存接口,但是这种成本较高,开发困难。
第二种方案就是,前端开发缓存插件,暂存数据保存在前端。
技术方案
采用vue自定义指令结合localstorage开发本地缓存策略
开发细节
1. 新建一个directive文件夹
2. index.ts ,绑定指令事件函数
export default function (app: any) { app.directive('storageInput', { created(el, binding) { console.log(el, binding, '1') // 项目加载后执行 el.addEventListener('click', handleClick(binding), false) }, updated(el, binding) { console.log(el, binding, '2') // 页面文档变更时执行 el.addEventListener('click', handleClick(binding), false) } }) }
3. 主要函数方法
/** * @Description: v-storage-input='["insured", "gender", item.gender, index+1]' * @param el * @param binding */ import { localStore } from 'wfl-utils' import { Const } from '/@/utils/constant' const { SIExpireTime } = Const // 18000s 300分钟 function handleClick(binding) { function handle() { const objInstance = binding.value if (Array.isArray(objInstance) && objInstance.length > 0) { setStorage(objInstance) } } function setStorage(key) { const objKey = key[0] // 获取需要存的对象key值 payer: {username: ''} payer既为key const fieldKey = key[1] const fieldValue = key[2] const fieldIndex = key[3] if (isNotNull(fieldIndex)) { // 保存数组,eg: insured const originObjKey = localStore.getItem(objKey) if (originObjKey) { // 如果原来有值的话先获取,在原来的地方push if (originObjKey.length <= fieldIndex) { originObjKey.push({}) } originObjKey[fieldIndex][fieldKey] = fieldValue localStore.setItem(objKey, originObjKey, SIExpireTime) } else { const obj = { [fieldKey]: fieldValue } localStore.setItem(objKey, [obj], SIExpireTime) } } else { const originObjKey = localStore.getItem(objKey) if (originObjKey) { // 如果原来有值的话先获取,在原来的地方push originObjKey[fieldKey] = fieldValue localStore.setItem(objKey, originObjKey, SIExpireTime) } else { // 初始化时,local里没有值时 const obj = { [fieldKey]: fieldValue } localStore.setItem(objKey, obj, SIExpireTime) } } } handle() return handle } function isNotNull(val) { return val !== undefined && val !== null && val !== 'undefined' && val !== '' }
上述代码主要思想是:保存用户录入数据到localStorage
先获取本地缓存key对应的值,如果没有就赋值存缓存并设置有效期, 用到wfl-utils这个插件。
如果有值则重新赋值覆盖到原来的对象字段上。
主方法里有if else 是判断是否有第四个参数,第四个参数是外层for循环的序号。
需要录入的是一个for循环数组需要加上第四个参数
如果是一个单出的form表单,大对象结构就不需要加第四个参数。
然后directive文件夹下新增index.ts
import storageInput from '/@/directive/storageInput' export default function registerDirectives(app: any) { storageInput(app) }
4. main.ts 注册指令
// 自定义指令 import registerDirectives from '/@/directive' registerDirectives(app)
5. 代码使用
只有一个大对象的表单使用
显示结果
总结
至此,vue3前端表单缓存自定义指令就开发完了,是不是非常简单
作者:蜗牛老师,多年开发经验,热爱开源,乐于分享,关注我,后期会有更多有用的项目分享。欢迎点赞评论加关注,感谢!
这篇关于vue3开发前端表单缓存自定义指令,移动端h5必备插件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16Vue3资料:新手入门必读教程
- 2024-11-16Vue3资料:新手入门全面指南
- 2024-11-16Vue资料:新手入门完全指南
- 2024-11-16Vue项目实战:新手入门指南
- 2024-11-16React Hooks之useEffect案例详解
- 2024-11-16useRef案例详解:React中的useRef使用教程
- 2024-11-16React Hooks之useState案例详解
- 2024-11-16Vue入门指南:从零开始搭建第一个Vue项目
- 2024-11-16Vue3学习:新手入门教程与实践指南
- 2024-11-16Vue3学习:从入门到初级实战教程