javascript - 如何在我的 tab.js 上获取 teamId 和 userPrincipalName?
问题描述
正如标题所述,我试图弄清楚如何在我的自定义团队应用程序的页面上获取我的 teamId 和 userPrincipleName。我遇到了很多不同的信息,但我是 Javascript 和 React 的完整初学者,所以我不知道如何正确应用它。
如何在团队应用程序的 tab.js 页面上显示 teamId 和 userPrincipleName?
我的代码:
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
import React from 'react';
import './App.css';
import * as microsoftTeams from "@microsoft/teams-js";
class Tab extends React.Component {
constructor(props){
super(props)
this.state = {
context: {}
}
}
componentDidMount(){
microsoftTeams.getContext((context, error) => {
this.setState({
context: context
});
});
}
componentDidMount(){
microsoftTeams.getContext((context) =>{
let userId = document.getElementById('user');
userId.innerHTML = context.userPrincipalName;
});
}
render() {
return(
<span id="user"></span>
)
}
}
export default Tab;
解决方案
你的第一个 componentDidMount 很好
componentDidMount(){
microsoftTeams.getContext((context, error) => {
this.setState({
context: context
});
});
}
这是调用 api,然后将上下文响应保存在本地状态。
一个问题是你有 2 个 componentDidMount 函数,你应该只有 1 个,所以你可以删除第 2 个。在 react 中你可以使用 {variable} 渲染变量,你不需要手动设置 innerHTML。
您可以修改渲染函数以context
在本地状态下使用该变量,如下所示
render() {
// grab the values from state.context
const { teamId, userPrincipleName } = this.state.context;
return(
<span id="user">Team: {teamId}, userPrincipleName: {userPrincipleName }</span>
)
}
推荐阅读
- jquery - 如何使用 jQuery 创建和附加 HTML?
- angular - “路由器插座”不是角度 6 中的已知元素
- netlogo - Netlogo - 改变形状颜色
- javascript - 如何在 Angular 6 CLI 应用程序中包含 Leaflet.TextPath 或 Leaflet.PolylineDecorator?
- javascript - Vue.js 多个根节点仅存在一个
- angularjs - Webpack 模式生产 NODE_ENV 仍然未定义
- powershell - 用于提取 Outlook .msg 文件数据并使用 Msg 数据重命名 .msg 文件的 Powershell 脚本(例如,发送日期、主题)
- java - HttpURLConnection 发布方法问题
- php - 无法在 PHPMailer 中使用(图像)发送电子邮件
- swift - 如何实现 windowDidEndSheet