【问题标题】:Working example for Graph Toolkit using SharePoint spfx, React and Get component with template使用 SharePoint spfx、React 和 Get 组件和模板的 Graph Toolkit 工作示例
【发布时间】:2021-02-10 20:50:17
【问题描述】:

我正在尝试在我的 SharePoint spfx Web 部件解决方案中使用 Microsoft Graph Toolkit,更具体地说是 React 版本 (@microsoft/mgt-react)。

我已经成功导入了包,并且还正确地渲染了控件。

但是,我现在尝试根据控件的结果来呈现控件。像这样的:

const MyPerson = (props: MgtTemplateProps) => {
      const { person } = props.dataContext;
      return <Person userId={person.userPrincipalName}></Person>;
    }

这里是控件:

      <Get resource={`/groups/${this.props.groupid}/members`}>
        <MyPerson template="value" />
      </Get>

没有渲染出来。 有人可以帮我解决这个问题吗?

谢谢!

更新的工作样本:

  public render(): React.ReactElement<IMemberListProps> {

const LoadingPerson = (props: MgtTemplateProps) => {
      return <div><Spinner size={SpinnerSize.large} label="Loading members..." /></div>;
    };

const MemberPerson = (props: MgtTemplateProps) => {
      const person = props.dataContext;
        return <div className={styles.memberRow}>
          <Person userId={person.userPrincipalName} view={PersonViewType.twolines} fetchImage={true} showPresence={true}
            personCardInteraction={PersonCardInteraction.hover} line2Property="mail"></Person></div>;
    };

    return (
      <div>
        <Get resource={`/groups/${this.props.groupId.toString()}/members/microsoft.graph.user/?$count=true&$orderby=displayname`} >
          <MemberPerson template="value" />
          <LoadingPerson template="loading" />
        </Get>
      </div>
    );
}

【问题讨论】:

    标签: reactjs templates sharepoint spfx microsoft-graph-toolkit


    【解决方案1】:

    props.dataContext 没有 person 属性,而是 person 对象本身,尝试将您的 MyPerson 定义更改为:

    const MyPerson = (props: MgtTemplateProps) => {
      const person = props.dataContext;
      return <Person userId={person.userPrincipalName}></Person>;
    }
    

    【讨论】:

    • 非常感谢!是否也可以有一个“加载”模板(也可能是一个“错误”模板)?我已经看到如何在标准 mgt 组件中实现这一点,但我找不到任何关于如何使用 React 组件进行设置的文档。
    • 您的意思是作为Get 组件的一部分吗?如果是这样,这将类似于value 模板的定义方式——只需在子组件上将template 属性设置为loading 或error。
    • 再次感谢您,尼古拉!我设法创建了一个新对象,并发送了“加载”模板。像魅力一样工作:-)
    • 正如您在这段代码中看到的,我试图让一些人使用 Get 对象。我想按名字订购它们。我试过使用这个资源查询,但它没有排序。你知道可能出了什么问题吗? /groups/${this.props.groupId.toString()}/members/microsoft.graph.user/?$count=true&amp;$orderby=displayname
    • @Frank-OveKristiansen,我没有尝试过,但也许这样的方法会起作用: - 将 MemberPerson 绑定到 default 模板 (template="default") - 在 @987654333 @模板,来自props.dataContext,你会得到从Graph中检索到的整个数据集合,对它进行排序,然后自己循环遍历它以构建要显示的HTML
    猜你喜欢
    • 2020-06-25
    • 2021-04-01
    • 2020-05-22
    • 2018-09-14
    • 2019-01-09
    • 1970-01-01
    • 2019-04-02
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多