Я не использовал React, поэтому мне было любопытно, как он сравнивается с Vue, который я использую. Vue также использует Virtual DOM, и на сайте Vue есть очень подробное сравнение между Vue и React, которое включает в себя много вклада от разработчика React Дэна Абрамова.

Я создал JSBin с вашими примерами плюс реализации на Vue, используя как шаблоны, так и рендеринг, которые раньше не использовал.

Версия для рендеринга очень похожа на React, с единственным HTML-кодом, представляющим собой div с идентификатором:

<div id=”vue-render”></div>

И JS:

var vData = {
  date: null,
};
var vmRender = new Vue({
  el: '#vue-render',
  data: vData,
  render: function(createElement) {
    return createElement(
      'div',
      { class: 'demo' },
      [
        'Hello Vue ',
        createElement('input'),
        createElement(
          'p',
          null,
          this.date,
        ),
      ]
    )
  },
});
const render = () => {
  vData.date = new Date().toString();
};
setInterval(render, 1000);

Однако в этом случае более идиоматической версией Vue будет использование шаблонов, и в этом случае HTML будет таким:

<div id="vue-template">
  <div class="demo">
    Hello Vue
    <input>
    <p>{{ date }}</p>
  </div>
</div>

И JS:

var vData = {
  date: null,
};
var vmTemplate = new Vue({
  el: '#vue-template',
  data: vData,
});
const render = () => {
  vData.date = new Date().toString();
};
setInterval(render, 1000);