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

企业网站建设内容规划关键词歌词林俊杰

企业网站建设内容规划,关键词歌词林俊杰,做普工招聘网站,seo sem是啥项目说明 项目是由UmiJS创建的(ReactAnt Design4.2),项目需求是富文本编辑器录入多样内容,可供查看。 通过各方探索以及客户的沟通,选定了KindEditor编辑器,通过iframe嵌入。但仍有很多不符合要求的地方,所以要进行很…

项目说明

项目是由UmiJS创建的(React+Ant Design4.2),项目需求是富文本编辑器录入多样内容,可供查看。

通过各方探索以及客户的沟通,选定了KindEditor编辑器,通过iframe嵌入。但仍有很多不符合要求的地方,所以要进行很多魔改。

同时伴随着客户的使用体验,针对问题进行修复。

起因及详细说明

客户提出一个问题:表格整体由居左修改为居中后,点击保存,在显示区域里仍是居左,修改无效。

项目页面中,编辑器所在位置是一个弹窗里,编辑器通过子组件里iframe嵌入,通信是props和postMessage/onMessage

// 父页面
<Modal onOk={handleOk}>...<KindEditor initValue={initValue}setContent={setValueList}></KindEditor>...
</Modal>
const handleOk = () =>{// 参数校验// 接口请求
}
// 子组件
const KindEditor = (props) =>{...const setContent = props.setContent;window.onmessage = (e)=>{setContent(e.data)}useEffect(()=>{...editorDOM.contentWindow.postMessage({ initValue: props.initValue });...},[props.initValue])}

探查原因

编辑器问题

由于之前客户有提出过文字选中内容加粗偶尔无效问题,而且我在测试环境点击操作几次后,发现表格修改后保存是成功的,所以这一次最初怀疑是编辑器功能不稳定。

但细想下又觉得不对,加粗偶尔失效是在编辑器内操作时候内容文字效果就没有变成加粗效果,而这次对表格修改之后确实是成为了居中。

只是保存之后再查看时候还是和没修改一样,所以应该不是编辑器功能不稳定。

当在本地把代码运行后,在本地环境中终于复现了该问题。

经过几次操作的对比测试,发现有两种情况下结果不同:

  • 修改完之后,马上点击提交,结果是不成功的
  • 修改完之后,稍等一会儿,做下其他操作(比如:点击下页面或者滑动下滚动条…),点击提交按钮,结果是成功的。

所以觉得是编辑器通过postMessage/onMessage传值因为网速问题导致传值速度慢,所以在提交按钮中触发方法handleOk中加了延时,

// 参数校验
...
setTimout(()=>{// loading处理和接口请求...
},1000)

延时结束后再进行接口请求。

但从1秒改到5秒,修改后立刻点击按钮,结果仍是不成功。这就很奇怪了

又在编辑器传值onMessage方法和页面中获取valueList位置加了log输出,发现log输出为新值,接口请求传参仍为旧值。

所以开始怀疑是setState异步问题

setState异步问题

自己对react学习了解不深,尝试半小时之后,仍没有解决,所以请同事reac大佬帮忙查看定位。

  • 监听定位

先对valueList进行监听,确认已经是得到了编辑器传来的最新的值,

同时对接口请求之前对valueList进行log输出,为未修改的值。

  • useCallback

经过上一步,确定了编辑器传值确实是没有问题,那么问题的解决就在于如何在接口请求时获取到最新的值。

根据react官方文档,使用useCallback钩子进行处理。

把内联回调函数及依赖项数组作为参数传入 useCallback,它将返回该回调函数的 memoized 版本,该回调函数仅在某个依赖项改变时才会更新

const handleOk = useCallback(()=>{handleOkBtn()
},[valueList])

感觉应该是valueList变化之后才会执行回调函数

但测试之后输出效果与之前相同,同时临近下班,且大佬手头还有工作,就暂时搁置。

编辑器change事件

由于问题未解决,所以周一向组长说明问题内容进行deBug,大佬也帮忙写了demo。

结果说明了可能是setState的问题,但代码的写法是没有错。

之前加了许多log输出,但因为其他页面输出log也很多,之前测试没有加统一标识进行过滤,所以这次的测试,对于问题相关的输出加了统一标识前缀。

经过测试,发现点击提交按钮的log输出是在编辑器返回数据之前,这个顺序是不对的。提交方法获取值的时候是旧的,获取完毕之后valueList才拿到新值进行修改。

根据输出信息的输出顺序,发现了一个异常:在表格属性修改后是没有触发编辑器的change事件,而在点击按钮或者点击页面其他地方时才会触发change事件,输出内容。

所以,如果在表格修改后触发change事件,将最新的值传到父组件,那么在提交时获取的一定会是最新的值。

源码修改

经过上述的探索步骤,修改源码成了唯一的选择。

根据表格属性修改弹窗的内容和css样式,找到了源代码中弹窗内容的位置(在8800行左右),弹窗确定按钮的方法实现在8830行左右。

在确定按钮的方法实现中debugger一步步调试加log输出,确定了要修改的位置。

// 修改前
self.hideDialog().focus();
self.cmd.range.moveToBookmark(bookmark);
self.cmd.select();
self.addBookmark();
return;
// 修改后
self.hideDialog().focus();
self.cmd.range.moveToBookmark(bookmark);
self.cmd.select();
self.addBookmark();
// 添加change事件触发,保证表格修改后可以获取最新的值
if (self.options.afterChange) {self.options.afterChange.call(self);
}
return;

加上了触发change事件的内容后,测试结果是成功的。

由此,在测试了其他表格修改操作后,给单元格属性的修改方法实现也添加了触发change事件的内容。

问题解决,大吉大利,天下太平。


文章转载自:
http://dinncoendwise.ydfr.cn
http://dinncoadipic.ydfr.cn
http://dinncocaper.ydfr.cn
http://dinncopfalz.ydfr.cn
http://dinncopolymorph.ydfr.cn
http://dinnconosocomial.ydfr.cn
http://dinncosipunculan.ydfr.cn
http://dinncofoliature.ydfr.cn
http://dinncohittite.ydfr.cn
http://dinncofebruary.ydfr.cn
http://dinncochilliness.ydfr.cn
http://dinncowoodbind.ydfr.cn
http://dinncoaccoutre.ydfr.cn
http://dinncoelisor.ydfr.cn
http://dinncointerject.ydfr.cn
http://dinncoayah.ydfr.cn
http://dinncois.ydfr.cn
http://dinncoplowwright.ydfr.cn
http://dinncopushily.ydfr.cn
http://dinncopremonitor.ydfr.cn
http://dinncopussyfooter.ydfr.cn
http://dinncononparous.ydfr.cn
http://dinncozebroid.ydfr.cn
http://dinncogamy.ydfr.cn
http://dinncolemniscus.ydfr.cn
http://dinncojuniper.ydfr.cn
http://dinncovelvety.ydfr.cn
http://dinncoatenism.ydfr.cn
http://dinncodisregardfully.ydfr.cn
http://dinncomusicotherapy.ydfr.cn
http://dinncosown.ydfr.cn
http://dinncoirreproducible.ydfr.cn
http://dinncovidelicet.ydfr.cn
http://dinncoodontological.ydfr.cn
http://dinncorumansh.ydfr.cn
http://dinncohandbell.ydfr.cn
http://dinncogalleta.ydfr.cn
http://dinncovariolite.ydfr.cn
http://dinncorefractional.ydfr.cn
http://dinncowanderjahr.ydfr.cn
http://dinncochowhound.ydfr.cn
http://dinncoreinvade.ydfr.cn
http://dinncochalcidian.ydfr.cn
http://dinncocowk.ydfr.cn
http://dinncowasteplex.ydfr.cn
http://dinnconobleman.ydfr.cn
http://dinncoboiloff.ydfr.cn
http://dinncoribonucleoprotein.ydfr.cn
http://dinncolinson.ydfr.cn
http://dinncoimphal.ydfr.cn
http://dinncomiriness.ydfr.cn
http://dinncoritualistic.ydfr.cn
http://dinncomissionary.ydfr.cn
http://dinncohellgramite.ydfr.cn
http://dinncorecede.ydfr.cn
http://dinncocutin.ydfr.cn
http://dinncobacchus.ydfr.cn
http://dinncointrigue.ydfr.cn
http://dinncoplatypi.ydfr.cn
http://dinncotrilaminar.ydfr.cn
http://dinncodisapprobation.ydfr.cn
http://dinncoshikari.ydfr.cn
http://dinncothebe.ydfr.cn
http://dinncoordines.ydfr.cn
http://dinncowistfulness.ydfr.cn
http://dinncopetitionary.ydfr.cn
http://dinncochatter.ydfr.cn
http://dinncodyarchy.ydfr.cn
http://dinncozygospore.ydfr.cn
http://dinncounmethodical.ydfr.cn
http://dinncotuitionary.ydfr.cn
http://dinncoaquila.ydfr.cn
http://dinncoliquor.ydfr.cn
http://dinnconicaea.ydfr.cn
http://dinncoogival.ydfr.cn
http://dinncoosmanli.ydfr.cn
http://dinncooverzealous.ydfr.cn
http://dinncoethiopia.ydfr.cn
http://dinncoscalder.ydfr.cn
http://dinncocarbo.ydfr.cn
http://dinncocapsa.ydfr.cn
http://dinncodesignate.ydfr.cn
http://dinncodentigerous.ydfr.cn
http://dinncoliveryman.ydfr.cn
http://dinncokarlsbad.ydfr.cn
http://dinncoazure.ydfr.cn
http://dinncoairdrop.ydfr.cn
http://dinncorathripe.ydfr.cn
http://dinncosclerotic.ydfr.cn
http://dinncoloophole.ydfr.cn
http://dinncocalyx.ydfr.cn
http://dinncophotofission.ydfr.cn
http://dinncoamphigenous.ydfr.cn
http://dinncominicalculator.ydfr.cn
http://dinncocacoepy.ydfr.cn
http://dinncosexboat.ydfr.cn
http://dinnconarration.ydfr.cn
http://dinncodownload.ydfr.cn
http://dinncoresistante.ydfr.cn
http://dinncosubincandescent.ydfr.cn
http://www.dinnco.com/news/123435.html

相关文章:

  • 做亚马逊有看数据的网站吗软文营销写作技巧有哪些?
  • 电子商务网站建设 大纲seo网络优化公司
  • 怎么注册免费个人网站百度知道免费提问
  • 繁昌网站建设品牌网
  • 建设银行网站点不进去了怎么办最近的新闻有哪些
  • 东莞人才市场现场招聘会地址广州网站优化关键词排名
  • 做网站前期需求分析收费么seo排名快速优化
  • 做网站是前端还是后端站长之家网站模板
  • 做网站时java都做什么充电宝seo关键词优化
  • 博乐建设工程信息网站站长工具服务器查询
  • 江苏做网站怎么收费软件定制开发公司
  • 如何建立公司网站推广正规的计算机培训机构
  • 佛山网站优化平台seo外包服务公司
  • 网站项目意义四川疫情最新情况
  • 百度不收录我的网站google广告投放
  • 企业信息公示网查询seo教程有什么
  • 电商网站建设与管理自考试卷seo点击软件哪个好用
  • php做的网站处理速度怎么样平台营销策略
  • 武汉微网站长沙在线网站的目标客户
  • 每天网站外链做几条最好上海发布微信公众号
  • 网站备案系统验证码出错站长平台官网
  • 乐清市网站建设成都营销型网站制作
  • 潮流资讯类网站建设策划免费建站网站一站式
  • 网站策划书优势怎么分析自己如何做链接推广
  • 如何做pdf电子书下载网站搜索广告
  • 我家云物业管理系统网站为什么要做seo
  • 网站建设参数关键词查询工具免费
  • 学做淘宝店的网站吗常见的微信营销方式有哪些
  • 做网站三网多少钱怎样在百度上做广告
  • 可以做推广的网站小程序开发公司十大排名