[英]d3: Avoid unchanged nodes?
当通过d3.js传递数据时,库将数据划分为输入/更新/退出组件,但我发现我们在更新部分中浪费了大量的计算,以便通过重新计算和重新计算来保持不变的值。将属性设置为已经是当前的相同值。
有没有什么好方法可以将“更新”集合进一步划分为已更改/未更改的集合?
您可以对更新选择进行其他选择。 也就是说,再次使用选择器调用.selectAll()
,该选择器仅为您提供需要更新的内容。 这当然假设您可以生成这样的选择器。 一种方法可能是通过CSS类完成所有操作,并在代码本身中不设置任何属性。 然后你可以根据CSS类选择。
除此之外,你无能为力。 D3背后的整个想法是可视化由数据决定,如果数据不变,视觉元素也保持不变。
您可以使用d3过滤器功能根据任意值进一步过滤掉值。 我过去曾使用过这种模式:
# store the extra value in the DOM to use for filtering later on:
selection.attr('data-someExtraValue', function(d) { return d.someExtraValue; });
# during the 'update' phase, filter out values who's someExtraValue hasn't changed:
filteredSelection = selection.filter(function(d) { return d.someExtraValue != parseInt(d3.select(this).attr('data-someExtraValue')); });
# do updates on the filtered selection rather than the initial selection...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.