I believe the templating is what's declarative, here. For instance, in Vue you can insert logic such as for loops, conditionals, event listeners, two-way data binding and so on right in the template with directives (HTML attributes).
<Todo v-for="(todo, index) in Todos" :key="index"/>
Instead of an imperative JavaScript for loop.