如何在Microsoft Teams任务模块中渲染JSX元素,Adaptive Card可否添加自定义组件?
Teams 应用开发问题解答
任务模块添加自定义JSX元素的实现方法
任务模块本质是Teams客户端内嵌的独立iframe页面,基于React的Teams项目可以直接按普通React开发逻辑添加自定义JSX,具体操作如下:
- 首先确认项目使用React技术栈,建议通过Teams Toolkit初始化项目,默认已经配置好任务模块的相关路由和打包规则
- 定位到任务模块对应的入口组件文件,默认路径为
src/taskModules/[模块名]/index.tsx,直接在该组件内编写自定义JSX代码即可 - 如果需要调用Teams客户端能力,必须先初始化Teams SDK,示例代码如下:
import { useEffect, useState } from 'react'; import * as microsoftTeams from "@microsoft/teams-js"; const CustomTaskPage = () => { const [context, setContext] = useState(null); useEffect(() => { // 初始化SDK const init = async () => { await microsoftTeams.app.initialize(); const userContext = await microsoftTeams.app.getContext(); setContext(userContext); } init(); }, []); return ( <div className="task-module-container"> {/* 以下为自定义JSX区域,可任意编写需要的元素 */} <h2>自定义任务模块页面</h2> <p>当前登录用户:{context?.user?.displayName}</p> <button onClick={() => console.log('自定义按钮触发')}>自定义操作</button> </div> ); } export default CustomTaskPage;
- 开发完成后通过Teams Toolkit的本地调试功能启动,即可在Teams客户端的任务模块中看到自定义JSX的渲染效果。
Adaptive Card是否支持添加自定义组件
原生Adaptive Card不支持添加自定义组件。Adaptive Card是跨平台的JSON渲染协议,所有渲染元素都必须符合官方定义的标准规范,仅支持内置的文本、输入框、按钮、媒体等标准元素,不支持注入自定义React/Vue组件。
如果需要实现复杂自定义交互,可采用以下替代方案:
- 通过Adaptive Card的
Action.Submit动作提交用户操作数据,服务端返回新的Adaptive Card刷新界面 - 点击Adaptive Card的动作按钮直接打开任务模块,在任务模块中用自定义JSX实现复杂交互逻辑。
内容的提问来源于stack exchange,提问作者Riya Ghosh
相关产品推荐
相关产品推荐

