问题描述
我正在尝试在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>
);
}
解决方法
props.dataContext
没有person属性,但是它是person对象本身,请尝试将MyPerson
的定义更改为:
const MyPerson = (props: MgtTemplateProps) => {
const person = props.dataContext;
return <Person userId={person.userPrincipalName}></Person>;
}