How to use mgt-people-picker in react framework

痴心易碎 提交于 2021-01-29 14:46:38

问题


I'm trying to use mgt-people-picker inside my SPFx Webpart with React framework, and couldn't get the selected-people attribute work. I tried passing an array of graph user objects to it but no luck.

When I tried to use

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

it threw an error saying "Property 'selectUsersById' does not exist on type 'Element'"

The documentation is quite limited and unclear and there isn't much reference that I could find. Can anyone tell me how to use it?


回答1:


React passes all data to web components in the form of HTML attributes. For primitive data this is fine, but it does not work when passing rich data, like objects or arrays. In those cases you will need to use a ref to pass in the object. See docs

Here is an example setting the users by 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']);
    }
  }
}



回答2:


With React, you can use PeoplePicker from the @microsoft/mgt-react module. Here is an example:

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

And the event handler:

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


来源:https://stackoverflow.com/questions/60368108/how-to-use-mgt-people-picker-in-react-framework

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!