With Vue.js, I use computed properties + v-for in html template.
With D3 I use the the enter/update/exit pattern with d3.selectAll(...).data(...).join(...).
Both seem to only modify the needed DOM elements. Vue.js uses a virtual DOM while D3 attaches a __data__ property to DOM elements.