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