本篇我们将编写一个获取日历事件的Webpart,我们将仍然使用上一篇中创建的SPFx解决方案,因此如果您还没有阅读看上一篇,请稍微花上10分钟的时间了解一下。传送门。
yo @microsoft/sharepoint
npm install date-fns --save
code .
,用VS Code打开项目如果你是接着上一篇文章继续操作的话,可以看到在完成上述操作后,webparts文件夹下面多了我们刚才新建的eventsList文件夹。
我们需要更新默认的webpart,向React组件中传入一个Microsoft Graph客户端API的实例。
import { MSGraphClient } from '@microsoft/sp-http';
import * as MicrosoftGraph from '@microsoft/microsoft-graph-types';
this.context.msGraphClientFactory.getClient()
.then((client: MSGraphClient): void => {
const element: React.ReactElement = React.createElement(
EventsList,
{
graphClient: client
}
);
ReactDom.render(element, this.domElement);
});
import { MSGraphClient } from '@microsoft/sp-http';
export interface IEventsListProps {
graphClient: MSGraphClient;
}
import * as MicrosoftGraph from '@microsoft/microsoft-graph-types';
export interface IEventsListState {
events: MicrosoftGraph.Event[];
}
import { IEventsListState } from './IEventsListState';
import * as MicrosoftGraph from '@microsoft/microsoft-graph-types';
import { List } from 'office-ui-fabric-react/lib/List';
import { format } from 'date-fns';
export default class EventsList extends React.Component {
constructor(props: IEventsListProps) {
super(props);
this.state = {
events: []
};
}
private _onRenderEventCell(item: MicrosoftGraph.Event, index: number | undefined): JSX.Element {
return (
{item.subject}
{format( new Date(item.start.dateTime), 'MMMM DD, YYYY h:mm A')} - {format( new Date(item.end.dateTime), 'h:mm A')}
);
}
public componentDidMount(): void {
this.props.graphClient
.api('/me/events')
.get((error: any, eventsResponse: any, rawResponse?: any) => {
const calendarEvents: MicrosoftGraph.Event[] = eventsResponse.value;
console.log('calendarEvents', calendarEvents);
this.setState({ events: calendarEvents });
});
}
打开package-solution.json文件,跟前一篇一样进行权限请求的配置,更新后的权限信息如下
"webApiPermissionRequests": [
{
"resource": "Microsoft Graph",
"scope": "User.ReadBasic.All"
},
{
"resource": "Microsoft Graph",
"scope": "Calendars.Read"
}
],
这里我们再将版本稍微的修改一下,改为1.0.0.1,"version": "1.0.0.1",
。
完成上述所有操作后,就可以进行编译部署了。
执行命令gulp build
进行编译。
编译成功的话继续执行如下命令进行打包
gulp bundle --ship
gulp package-solution --ship
将生成的解决方案包上传到引用程序目录网站进行部署,部署成功后版本也变成了1.0.0.1。
到API Management中批准新增的权限请求。
在之前的测试网站中,对app进行更新。查看网站内容,点击我们的app的…菜单中的Detail查看,会提示新版本,点击按钮进行更新。
更新完成后我们就可以添加新开发的webpart进行测试了。