使用背景
在纯前端应用中,需要保存用户上传的多张图片及其它数据,极端情况下可能会超过localStorage的5M限制,所以用了indexedDB来对数据做持久化处理,这里主要介绍对图片的上传保存及react框架对数据的提取。
由于indexedDB和JSON.Stringfly不能识别和拷贝jsx语法,所以在上传图片的时候需要把图片转化成base64的格式。以下是对图片转化的代码
上传完成之后的提取场景是在用户刷新或者关闭浏览器之后,打开对应路由的生命周期中。正常的路由切换通过KeepAlive组件实现缓存,不会重复提取数据。
这里由于图片是base64格式保存的,所以可以直接用src属性获取img。
另外记录几个初次接触umi开发中遇到的小问题
umi约定式路由的动态路由,切换路由对复用的组件不会引起重复的渲染,导致数据是不变的。
解决办法:给复用的组件加上 key 属性唯一标识即可。
KeepAlive插件在某些情况下需要配置某些属性才能生效。
右击菜单复制或剪切文字时,需要取消onmouseDown的默认行为,否则会先失焦再出发复制事件,无法获取选问文字
pre标签可以识别换行符 , contentEditable=true 是H5的新特性,可以开启对各种节点(如div)的编辑模式。