如何在 React 框架中使用 mgt-people-picker

How to use mgt-people-picker in react framework

我试图在我的 SPFx Webpart 中使用 mgt-people-picker 和 React 框架,但无法使 selected-people 属性起作用。我尝试将一组图形用户对象传递给它,但没有成功。

当我尝试使用

document.querySelector('mgt-people-picker').selectUsersById(["id","id"])

它抛出一个错误 "Property 'selectUsersById' does not exist on type 'Element'"

文档非常有限且不清楚,我找不到太多参考资料。谁能告诉我怎么用?

React 将所有数据以 HTML 属性的形式传递给 Web 组件。对于原始数据,这很好,但在传递丰富的数据(如对象或数组)时它不起作用。在这些情况下,您将需要使用 ref 来传递对象。参见 docs

这是一个通过 id 设置用户的例子:

export default class HelloWorld extends React.Component<IHelloWorldProps, {}> {
  public render(): React.ReactElement<IHelloWorldProps> {
    return (
      <mgt-people-picker ref="peoplePicker"></mgt-people-picker>
    );
  }

  componentDidMount() {
    if (this.refs.peoplePicker) {
      let peoplePicker = this.refs.peoplePicker as MgtPeoplePicker;

      peoplePicker.addEventListener('selectionChanged', e => console.log(peoplePicker.selectedPeople));

      peoplePicker.selectUsersById(['4782e723-f4f4-4af3-a76e-25e3bab0d896']);
    }
  }
}

通过 React,您可以使用 @microsoft/mgt-react 模块中的 PeoplePicker。这是一个例子:

  <PeoplePicker
    selectionMode="single"
    defaultSelectedUserIds={[Inky@pathto.onmicrosoft.com"}]}
    selectionChanged={onChangePeople}
  />

和事件处理程序:

  function onChangePeople(e) {
    console.log(e.detail);
  }