Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用React SPFx将当前登录的用户ID存储在变量中_Reactjs_Sharepoint Online_Spfx_Restapi_Pnp Js - Fatal编程技术网

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

Reactjs 使用React SPFx将当前登录的用户ID存储在变量中,reactjs,sharepoint-online,spfx,restapi,pnp-js,Reactjs,Sharepoint Online,Spfx,Restapi,Pnp Js,我是SPFx的新手,正在绞尽脑汁使用React获取SPFx上的当前登录用户,我确实参考了这里的一些帖子,但是找不到我一直在寻找的解决方案 我的最终目标是获取当前登录的userID,并将该值存储在一个变量中,以便稍后在RestAPI中使用 下面是代码示例 公共组件didmount(){ var u; sp.web.currentUser.get()。然后( (用户)=>{ console.log(用户); u=user.UserId; }, (错误响应)=>{ 调试器; console.log(e

我是SPFx的新手,正在绞尽脑汁使用React获取SPFx上的当前登录用户,我确实参考了这里的一些帖子,但是找不到我一直在寻找的解决方案

我的最终目标是获取当前登录的userID,并将该值存储在一个变量中,以便稍后在RestAPI中使用

下面是代码示例

公共组件didmount(){
var u;
sp.web.currentUser.get()。然后(
(用户)=>{
console.log(用户);
u=user.UserId;
},
(错误响应)=>{
调试器;
console.log(errorResponse);
}
);//获取当前用户*/
sp.web.list
.getByTitle(“样本列表”)
.items.select(
"*",
“课程名称/标题”,
“与会者/标题”,
“与会者/ID”,
“地位/头衔”,
“已完成”,
“附件文件”
)
.展开(“课程名称”、“与会者”、“状态”、“附件文件”)
.filter(“状态/标题eq“未启动”和与会者eq“+u+””))
.top(4999)
.orderBy(“已创建”,false)
.get()
。然后((响应)=>{
让getdetails=response.map((item)=>newEntityListItems(item));
});
}
调试时,我在变量u上得到一个未定义的值

如果有人能帮助我将当前登录的userID存储到一个变量中,以便我可以将值传递给Rest调用,我将不胜感激


任何帮助都将不胜感激。

获取用户信息的请求是异步的,它不能保证在变量u设置值后调用第二个请求。因此,我们建议您将第二个请求放在回调中,这应该确保已经获取了用户信息

还有一种快速获取当前用户id的方法:

this.context.pageContext.legacyPageContext["userId"]
legacyPageContext类似于
\u spPageContextInfo
。有关更多详细信息,请参阅以下博客:


BR

我使用这个:
this.context.pageContext.user.email

@Baker_King_MSFT感谢您的回复,我尝试了您建议的步骤,并得到错误“无法读取未定义的属性'legacyPageContext',我已经在webpart.ts文件上设置了上下文,如下所示public onInit():Promise{return super.onInit()。然后(=>{//sp.setup({spfxContext:this.context});})中可能存在其他初始化代码