JSFiddle - React, Tailwind, and code Playground

JavaScript

var myBalloonContentLayout = ymaps.templateLayoutFactory.createClass(
    '{{object.id}}<span class="Hballoon">{% if properties.loaded %}{{properties.contentHeader}}{% else %}<strong>{{properties.title}}</strong>{% endif %}, {{properties.tPlace}}</span>' +
    '{% if properties.loaded %}{{properties.contentBody}}{% else %}<p>Загрузка...</p>{% endif %}', {
      build: function() {
        myBalloonContentLayout.superclass.build.call(this);
        var object = this.getData();
        if (!object.properties.get('loaded') {
            getPlaceInfo(object).then(response => {
              object = response;
              console.log(object);
              this.rebuild();
            });
          }
        }
      });

    function getPlaceInfo(object) {
      var defer = ymaps.vow.defer();

      var jqXHR = $.get('data_json.php?nid=' + object.object.id.slice(2), function(data) {
        var place_data = JSON.parse(data);

        object.properties.set('contentHeader', '<a href="' + place_data.href + '" target="_blank">' + object.properties.get('title') + '</a>, ' + object.properties.get('tPlace'));
        object.properties.set('contentBody', '<p>' + place_data.text + '</p>');
        object.properties.set('loaded', true);

        defer.resolve(object);
      });
      jqXHR.fail(function() {
        object.properties.set('contentHeader', object.properties.get('title'));
        object.properties.set('contentBody', '<p>Невозможно получить данные.</p>');
        object.properties.set('loaded', true);

        defer.resolve(object);
      });

      return defer.promise();
    }