使用React SPFx将当前登录的userId存储在变量中

问题描述

我是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