当前位置: 首页 > news >正文

山东网站开发网络公司国家工商网企业查询官网

山东网站开发网络公司,国家工商网企业查询官网,希望小学学校网站建设方案,有专门做面包的网站么对于频繁改动的应用#xff0c;自动保存的功能是一个非常有用的功能#xff0c;可以避免用户在没有保存的情况下丢失自己保存过的数据。 对于自动保存#xff0c;一般有两种实现#xff0c;参考语雀和石墨#xff1a; 语雀采用的是定时保存的方式#xff0c;大约在3分半…对于频繁改动的应用自动保存的功能是一个非常有用的功能可以避免用户在没有保存的情况下丢失自己保存过的数据。 对于自动保存一般有两种实现参考语雀和石墨 语雀采用的是定时保存的方式大约在3分半后自动发送一次请求石墨文档采用的是实时保存对于文本区域直接输入字符的时候会发送请求就是在文本区域onchange的时候绑定一个事件有新内容介入的时候发送请求。 这里我们可以采用第一种方法定时发送请求。采用这种方式之前我们可以进行一个优化为了避免一股脑的发送请求比如说如果用户没有做任何操作到时候还是会发送请求所以呢我们要给他添加一个特殊字段isDirty这个字段可以标记一次数据是否有修改加入有修改才进行保存这里采用的方式和做历史数据功能的方式类似不会采用对比新旧数据比较耗时的方法而是触发特定的mutations才会标记字段比如说addComponent、deleteComponent、updateComponent、updatPage。 // 特殊字段 isDirty// 在一些 mutation 的时候同时修改该字段 addComponent deleteComponent updateComponent updatePagestate.isDirty true// 在 save 之后将 isDirty 置为 false state.isDirty false代码实现添加isDirty字段 // store/editor.ts export interface EditorProps {// 供中间编辑器渲染的数组components: ComponentData[];// 当前编辑的是哪个元素uuidcurrentElement: string;// 当然最后保存的时候还有有一些项目信息这里并没有写出等做到的时候再补充page: PageData;// 当前被复制的组件copiedComponent?: ComponentData;// 当前操作的历史记录histories: HistoryProps[];// 当前历史记录的操作位置historyIndex: number;// 开始更新时的缓存值cachedOldValues: any;// 保存最多历史条目记录数maxHistoryNumber: number;// 数据是否有修改isDirty: boolean; }然后在一系列mutations中给isDirty设置为true这都是一系列重复的功能这时候就想到之前使用过的高阶函数处理过浏览器的默认行为web架构师编辑器内容-快捷键操作的实现这里我们也可以封装成高阶函数来完成一系列操作比较方便 // store/editor.ts const setDirtyWrapper (callback: MutationEditorProps) {return (state: EditorProps, payload: any) {state.isDirty true;callback(state, payload);}; };// mutations // 添加元素 addComponent: setDirtyWrapper((state, component: ComponentData) {component.layerName 图层 (state.components.length 1);state.components.push(component);pushHistory(state, {id: uuidv4(),componentId: component.id,type: add,data: cloneDeep(component),}); })// 粘贴元素 pasteCopiedComponent: setDirtyWrapper((state) {if (state.copiedComponent) {const clone cloneDeep(state.copiedComponent);clone.id uuidv4();clone.layerName clone.layerName 副本;state.components.push(clone);message.success(已黏贴当前图层, 1);pushHistory(state, {id: uuidv4(),componentId: clone.id,type: add,data: cloneDeep(clone),});} })// 删除元素 deleteComponent: setDirtyWrapper((state, id) {const currentComponent state.components.find((component) component.id id);if (currentComponent) {const currentIndex state.components.findIndex((component) component.id id);state.components state.components.filter((component) component.id ! id);pushHistory(state, {id: uuidv4(),componentId: currentComponent.id,type: delete,data: currentComponent,index: currentIndex,});message.success(删除当前图层成功, 1);} })//更新元素 updateComponent: setDirtyWrapper((state, { key, value, id, isRoot }: UpdateComponentData) {const updatedComponent state.components.find((component) component.id (id || state.currentElement));if (updatedComponent) {if (isRoot) {(updatedComponent as any)[key as string] value;} else {const oldValue Array.isArray(key)? key.map((key) updatedComponent.props[key]): updatedComponent.props[key];if (!state.cachedOldValues) {state.cachedOldValues oldValue;}pushHistoryDebounce(state, { key, value, id });if (Array.isArray(key) Array.isArray(value)) {key.forEach((keyName, index) {updatedComponent.props[keyName] value[index];});} else if (typeof key string typeof value string) {updatedComponent.props[key] value;}}}} )发送完请求后将isDirty置为false // store/editor.ts saveWork(state) {state.isDirty false; },在onMounted生命周期里面增加对于的逻辑 onMounted(() {timer setInterval(() {if (isDirty.value) {saveWork();}}, 1000 * 50); }); onUnmounted(() {clearInterval(timer); });
http://www.eeditor.cn/news/123305/

相关文章:

  • 阿里巴巴网站广告怎么做wordpress插件卸载
  • 上海营销型网站标准app网站开发框架
  • 哈尔滨做网站哪家好广州番禺职业技术学院
  • 大型门户网站开发费用上海网页设计公司山东济南兴田德润简介
  • 网站菜单导航制作教程哈尔滨关键词优化效果
  • 昆明网站建设一条龙服务广州住房和建设局网站
  • 手机网站在后台怎么做编辑什么网站ghost做的好
  • 做网站赤峰怎么制作网站封面
  • 投资公司网站模板郑州关键词网站优化排名
  • 北京定制网站建设公司学校网站建设 效果
  • 网站设计合同网页版游戏排行榜枪
  • 做网站复杂吗wordpress页面半透明
  • 泰和县城乡建设局网站wordpress 多主题插件
  • 下载建设银行官方网站下载安装做静态网站接单
  • 做网站要收订金吗电子购物网站建设
  • 上海网站建设公司联系方式网站上的图文介绍怎么做的
  • 临安市住房和建设局网站建筑公司取名参考
  • 陕西做网站电话男女做羞羞的事视频网站
  • 公司网站建设建议网上下载的html模板怎么修改
  • 建设银行网站的安全措施门户网站建设询价公告
  • 徐州如何选择网站建设福建省建设执业注册与管理中心网站
  • 怎么知道网站被k住房与建设管理局
  • 济南集团网站建设流程开放平台供稿人计划
  • 网站建设辶首选金手指十五directory wordpress
  • 滨州建网站公司做爰全过程免费的视频网站有声音
  • 域名服务器ip查询网站如何用ps做网站导航条
  • 莱芜网站建设公司罗村网站制作
  • 深圳网站开发定制网站建设推广唯心磁遁8
  • 网站开发毕业设计书企业所得税怎么做账务处理
  • 淘宝的网站怎么做网站结构的规划