![]() | 1 murmur 38 天前 我用的大型 OA ,只保存了历史记录,没有对比功能, 可能的却是太难了 |
2 Shokupanman 38 天前 不用每个都单独写一套,扩展一下你那个最基础组件的功能就行了,isEqual 不也能写到基础组件里面去吗 |
3 hwdq0012 38 天前 这个我在我们属性树上做过, 设计模式 proxy , 原来的数据用包在代理数据里,代理里加状态 |
![]() | 4 Chuckle OP @Shokupanman 每种 type 都是独立的组件,要展示的内容、value 数据结构都不同,没法复用 |
5 kamilic 32 天前 用状态管理那套方法来做?记录所有的操作历史记录,然后做 diff |
![]() | 6 Chuckle OP @kamilic diff 倒是简单,loadsh 都有现成方法,后面我还是用了方案二,写了个通用组件,把新旧数据都渲染一次,然后用 observer api 观察子元素 dom ,dom diff 、算最长公共子序列,把增删改的文本在新 dom 上标记了出来,不过坏处就是只能对文本节点操作,像勾选框之类的就没办法了 |
7 sibusana 23 天前 直接 diff html 呢?像富文本编辑器那样对比历史记录 |