• Почему здесь не происходит бесконечный рендер Vue-компонента?

    @EranosyanEduard Автор вопроса
    Aetae, большое спасибо за ваш ответ. Вы меня подтолкнули к проверке вашего предположения и действительно Vue не ругается, если в данном случае просто изменять значения состояния activatorNode.

    Я подготовил пример, чтобы разговор был предметней.

    Компонент VHover необходим только для провоцирования рендера компонента Example. В примере 2-а случая, провоцирующий ошибку и нет. Ошибка происходит при использовании слота default в явном виде.

    Я обратил внимание, что если изменить тело метода getRoot компонента Example следующим образом, то всё работает корректно, но почему я не понимаю:
    // Было
    getRoot(): VNode[] {
      this.root = this.$scopedSlots.default(this.bindings) || [];
      return this.root;
    }
    
    // Стало
    getRoot(): VNode[] {
      const root = this.$scopedSlots.default(this.bindings) || [];
      this.root = root;
      return root;
    }
    Написано
  • Как исправить ошибку при сборке проекта с помощью parcel?

    @EranosyanEduard Автор вопроса
    Froggyweb, спасибо. Вы правы: проект размещен по пути, в котором была подстрока "Рабочий стол", исключив из пути к проекту буквы русского алфавита parcel запустился.
  • Как обеспечить загрузку pdf-файла, получаемого в ответе сервера, при помощи js?

    @EranosyanEduard Автор вопроса
    Спасибо за ответ, но по какой-то причине использование конструктора Blob не позволяет достигнуть необходимого результата! А вот использование значения - результата вызова метода blob() на объекте, который представляет ответ от сервера приводит. В случае, если возможно, то объясните, пожалуйста, в чем тут дело?

    <script>
          const btn = document.querySelector(".btn");
    
          btn.addEventListener("click", () => {
            fetch("someUrl", {
              method: "POST",
              headers: {
                "content-type": "application/json",
                "x-api-token": "someToken",
              },
              body: JSON.stringify({
                contractId: 80,
                document: 49904,
                download: true,
              }),
            }).then((v) => {
              v.blob().then((blob) => {
                // Использую метод slice, чтобы файл имел необходимый тип. 
                url = window.URL.createObjectURL(blob.slice(0, blob.size, "application/pdf"));
    
                const a = document.querySelector(".anchor");
    
                a.style.display = "none";
                a.href = url;
                a.download = "testFile.pdf";
                a.click();
    
                window.URL.revokeObjectURL(url);
              });
            });
          });
        </script>