确定呈现的 Web 部件大小

有时,出于各种原因,自定义SharePoint 框架 (SPFx) 应用程序需要知道 Web 部件的呈现大小。 在不同设备(如桌面或移动浏览器)上查看 Web 部件时,此值可能会更改。

Web 部件的呈现大小也可能取决于 Web 部件在页面上的位置。 如果 Web 部件用作 单个部件应用页面,它可以是一个大小,但如果也用作 Web 部件呈现在只有一列或多列的页面布局中,则它可以以完全不同的大小呈现。

Web 部件的功能可能因呈现的 Web 部件的大小而异。

在 SPFx v1.12 版本中引入,开发人员可以确定呈现的 Web 部件的宽度。 以前,可靠地确定此值的唯一方法是通过不支持的方法,例如检查页面 DOM。

获取呈现的 Web 部件宽度

width Web 部件类上的 属性以数字形式返回 Web 部件的当前呈现宽度。 Web 部件应利用此属性来执行操作,例如基于 Web 部件的初始可用宽度设置组件的任何条件样式。

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>`;
}

检测 Web 部件宽度何时更改

开发人员还可以通过处理事件来确定 Web 部件呈现的宽度何时发生变化:

protected onAfterResize(newWidth: number): void;

当 Web 部件容器 DOM 元素宽度发生更改时(例如,在调整浏览器窗口大小和打开/关闭属性窗格时)时,将调用此 API。

Web 部件应利用此方法来执行操作,例如,根据 Web 部件的新可用宽度可能重新呈现组件。

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