问题描述
我是SPFx的新手,全神贯注地使用React在SPFx上获取当前登录用户,我确实在这里引用了几篇文章,但是找不到我一直在寻找的分辨率。
我的最终目标是获取当前登录的用户ID,并将该值存储在变量中,以便稍后在RestAPI中使用
下面是代码示例
public componentdidmount() {
var u;
sp.web.currentUser.get().then(
(user) => {
console.log(user);
u = user.UserId;
},(errorResponse) => {
debugger;
console.log(errorResponse);
}
); //Get Current User*/
sp.web.lists
.getByTitle("SampleList")
.items.select(
"*","CourseName/Title","Attendee/Title","Attendee/ID","Status/Title","Completed","AttachmentFiles"
)
.expand("CourseName","Attendee","Status","AttachmentFiles")
.filter("Status/Title eq 'Not Started' and Attendee eq '" + u + "'")
.top(4999)
.orderBy("Created",false)
.get()
.then((response) => {
let getdetails = response.map((item) => new EntityListItems(item));
});
}
在调试时,我在变量u上得到了一个未定义的值。
如果有人可以帮助我将当前登录的用户ID存储到变量中,以便将值传递给Rest调用,我将不胜感激。
任何帮助将不胜感激。
解决方法
获取用户信息的请求是异步的,它不能保证在变量u设置了值之后调用第二个请求。因此,我们建议您将第二个请求放入回调中,这应确保已获取用户信息。
有一种获取当前用户ID的快速方法:
this.context.pageContext.legacyPageContext["userId"]
legacyPageContext与_spPageContextInfo
类似。请参阅下面的博客以获取更多详细信息:
BR
,我用这个:this.context.pageContext.user.email