Определение размера отрисоченной веб-части

Иногда пользовательским приложениям SharePoint Framework (SPFx) необходимо знать размер веб-части, отрисованного по разным причинам. Это значение может изменяться при просмотре веб-частей на разных устройствах, таких как настольный или мобильный браузер.

Отрисованный размер веб-части также может зависеть от того, где она размещена на странице. Если веб-часть используется в качестве страниц приложения с одной частью, она может быть одного размера, но если она также используется в качестве отрисовки веб-части в макете страницы с одним столбцом или несколькими столбцами, она может быть отрисовывается в совершенно другом размере.

Функциональные возможности веб-части могут отличаться в зависимости от размера отрисоченной веб-части.

Появилась в выпуске SPFx версии 1.12, разработчики могут определять ширину отрисовываемой веб-части. Ранее единственный способ надежно определить это значение был с помощью неподдерживаемых средств, таких как проверка DOM страницы.

Получение ширины отрисоченной веб-части

Свойство width класса веб-части возвращает текущую отрисованную ширину веб-части в виде числа. Веб-части должны использовать это свойство для выполнения таких операций, как любой условный стили компонентов на основе начальной доступной ширины веб-части.

public render(): void {
  this.domElement.innerHTML = `
    <div class="${ styles.helloWorld }">
      <div class="${ styles.container }">
        <div class="${ styles.row }">
          <div class="${ styles.column }">
            <p class="${ styles.description }">Web Part width: ${this.width}</p>
          </div>
        </div>
      </div>
    </div>`;
}

Обнаружение изменения ширины веб-части

Разработчики также могут определить, когда изменяется ширина отображаемой веб-части, обрабатывая событие:

protected onAfterResize(newWidth: number): void;

Этот API вызывается при изменении ширины элемента DOM контейнера веб-части, например при изменении размера окна браузера и при переключе области свойств.

Веб-части должны использовать этот метод для выполнения таких операций, как потенциально повторная отрисовка компонентов на основе новой доступной ширины веб-части.

protected onAfterResize(newWidth: number) {
  console.log(`the new width of the web part is ${newWidth}`);
}