首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >virtual-dom diff替换/删除而不是仅删除

virtual-dom diff替换/删除而不是仅删除
EN

Stack Overflow用户
提问于 2016-05-20 04:02:07
回答 1查看 275关注 0票数 1

使用virtual-dom hdiff方法。

给定:[a,b][b]

生成的diff补丁将a替换为b,然后删除b,而不是简单地删除a

RequireBin example.

代码语言:javascript
复制
vdom1 = h('div', [
  h('div', 'div stuff'),
  h('img', {src: 'keepme.png'})
])

vdom2 = h('div', [
  h('img', {src: 'keepme.png'})
])

diff(vdom1, vdom2)

结果如下:

代码语言:javascript
复制
1 VNODE DIV ... IMG (replace DIV with IMG)
3 REMOVE IMG

需要做什么来“对齐”img元素,这样它才不会被移除并重新添加进来?

EN

回答 1

Stack Overflow用户

发布于 2016-05-20 04:02:07

添加virtual-dom属性key作为元素属性就可以解决这个问题。

key

如果您使用h(‘VNode’,{ key: someKey })调用h,它将在返回的div上设置一个键。这个键不是一个普通的DOM属性,而是一个虚拟随机优化提示。

它主要是告诉virtual-dom对DOM节点进行重新排序,而不是改变它们。

Fixed example.

代码语言:javascript
复制
vdom1 = h('div', [
  h('div', 'div stuff'),
  h('img', {src: 'keepme.png', key: 1})
])

vdom2 = h('div', [
  h('img', {src: 'keepme.png', key: 1})
])

diff(vdom1, vdom2)

结果如下:

代码语言:javascript
复制
1 REMOVE DIV

(solution的功劳归功于Chris Vickery。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37332957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档