Power BI 视觉对象在 React 应用中的嵌入实践指南


Power BI 视觉对象在 React 应用中的嵌入实践指南

本教程详细介绍了如何在 React 应用中高效嵌入 Power BI 的特定视觉对象,而非整个报表或页面。核心方法是利用 powerbi-client-react 库提供的 PowerBIEmbed 组件,避免直接使用 powerbi-client 造成的常见错误,并提供详细的配置指南和代码示例,确保视觉对象无缝集成。

在现代前端应用中集成数据可视化是常见的需求。对于 power bi 用户而言,将 power bi 报表中的特定视觉对象嵌入到 react 应用中,可以提供高度定制化的数据展示体验。然而,直接使用 powerbi-client 库可能会遇到一些挑战,特别是当您试图嵌入单个视觉对象时。本文将指导您如何利用 powerbi-client-react 库,以 react 友好的方式实现 power bi 视觉对象的无缝嵌入。

为什么选择 powerbi-client-react?

powerbi-client 是 Power BI 官方提供的 J*aScript SDK,用于在 Web 应用中嵌入 Power BI 内容。它提供了底层的 embed 函数来处理嵌入逻辑。然而,在 React 这样的组件化框架中,直接在 useEffect 钩子中调用 powerbi.embed 并手动管理 DOM 元素,不仅增加了代码的复杂性,还可能导致一些 React 生命周期管理上的问题,例如常见的 Uncaught TypeError: powerbi_client__WEBPACK_IMPORTED_MODULE_8__.embed is not a function 错误,这通常是由于在非浏览器环境中尝试调用该函数或打包配置问题导致的。

powerbi-client-react 是 powerbi-client 的一个 React 封装,它提供了一个 组件,极大地简化了在 React 应用中嵌入 Power BI 内容的过程。它将底层的 embed 逻辑封装在 React 组件的生命周期中,使得集成更加声明式和符合 React 范式。

环境准备

首先,您需要在您的 React 项目中安装必要的库:

npm install powerbi-client-react powerbi-client
# 或者
yarn add powerbi-client-react powerbi-client

powerbi-client-react 依赖于 powerbi-client,因此两者都需要安装。

嵌入 Power BI 视觉对象的核心步骤

嵌入单个 Power BI 视觉对象的关键在于正确配置 embedConfig 对象,并将其传递给 PowerBIEmbed 组件。

YouMind YouMind

AI内容创作和信息整理平台

YouMind 207 查看详情 YouMind

1. 获取嵌入所需参数

在嵌入任何 Power BI 内容之前,您需要从 Power BI 服务或 Azure AD 获取以下关键信息:

  • embedUrl: Power BI 报表的嵌入 URL。
  • reportId: Power BI 报表的唯一 ID。
  • accessToken: 用于认证的访问令牌。这通常通过 Azure AD 认证流程(如 OAuth 2.0)获取。
  • pageName: 视觉对象所在的页面名称。您可以在 Power BI Desktop 的“选择”窗格中查看页面名称,或在 Power BI 服务中查看报表 URL 中的 pageName 参数。
  • visualName: 要嵌入的特定视觉对象的名称。您可以在 Power BI Desktop 的“选择”窗格中找到视觉对象的名称。

2. 使用 PowerBIEmbed 组件

以下是一个在 React 组件中嵌入 Power BI 视觉对象的示例:

import React from 'react';
import { PowerBIEmbed } from 'powerbi-client-react';
import { models } from 'powerbi-client'; // 用于 TokenType 枚举

/**
 * 嵌入 Power BI 单个视觉对象的 React 组件
 */
function PowerBIReportVisualEmbed() {
  // 替换为您的实际值
  // 这些值通常从后端服务获取,以避免将敏感信息硬编码到前端
  const embedUrl = "https://app.powerbi.com/reportEmbed?reportId=YOUR_REPORT_ID_HERE";
  const reportId = "YOUR_REPORT_ID_HERE";
  const accessToken = "YOUR_ACCESS_TOKEN_HERE";

  // 示例页面和视觉对象名称
  // 请确保这些名称与您的 Power BI 报表中的实际名称一致
  const pageName = "ReportSection600dd9293d71ade01765"; // 例如:从 Power BI Desktop 的选择窗格获取
  const visualName = "VisualContainer6";             // 例如:从 Power BI Desktop 的选择窗格获取

  const embedConfig = {
    type: 'visual', // **关键**:指定嵌入类型为视觉对象
    tokenType: models.TokenType.Aad, // 根据您的认证方式选择 Aad 或 Embed
    accessToken: accessToken,
    embedUrl: embedUrl,
    id: reportId,
    pageName: pageName,
    visualName: visualName,
    settings: {
      // 可选:添加更多嵌入设置,例如禁用筛选器窗格、导航窗格等
      filterPaneEnabled: false,
      n*ContentPaneEnabled: false,
      background: models.BackgroundType.Transparent, // 设置背景为透明
    },
  };

  return (
    <div style={{ height: '500px', width: '100%', border: '1px solid #ccc' }}>
      {accessToken && reportId && embedUrl ? ( // 确保所有必要参数都已加载
        <PowerBIEmbed
          embedConfig={embedConfig}
          eventHandlers={
            new Map([
              ['loaded', () => console.log('Power BI Visual loaded')],
              ['error', (event) => console.error('Power BI Embed error:', event.detail)],
              ['rendered', () => console.log('Power BI Visual rendered')],
            ])
          }
          cssClassName="powerbi-visual-embed-container" // 为嵌入容器添加 CSS 类
          get />
      ) : (
        <div>加载 Power BI 视觉对象中...</div>
      )}
    </div>
  );
}

export default PowerBIReportVisualEmbed;

3. embedConfig 详细说明

  • type: 'visual': 这是告诉 Power BI 客户端您要嵌入的是一个特定的视觉对象,而不是整个报表或页面。这是实现单个视觉对象嵌入的关键。
  • tokenType:
    • models.TokenType.Aad: 用于 Azure Active Directory (AAD) 认证。
    • models.TokenType.Embed: 用于 Power BI 嵌入令牌(通常由 Power BI Embedded 服务生成)。
    • 请根据您的认证方式选择正确的令牌类型。
  • accessToken: 您的访问令牌,用于授权访问 Power BI 内容。
  • embedUrl: 报表的嵌入 URL。
  • id: 报表的唯一 ID。
  • pageName: 视觉对象所在的页面名称。务必确保此名称与 Power BI 报表中显示的页面名称完全匹配。 在 Power BI Desktop 中,您可以通过“视图”->“选择”窗格来查看所有页面和视觉对象的名称。
  • visualName: 要嵌入的特定视觉对象的名称。同样,务必确保此名称与 Power BI 报表中的视觉对象名称完全匹配。

4. 注意事项与最佳实践

  • 容器尺寸: 确保 组件的父容器(例如示例中的 div)具有明确的 height 和 width 样式。Power BI 嵌入内容通常会尝试填充其容器,如果容器没有明确尺寸,可能导致视觉对象无法正确显示。
  • 安全性: accessToken 是敏感信息。在生产环境中,它应该从安全的后端服务动态获取,而不是硬编码在前端代码中。
  • 错误处理: PowerBIEmbed 组件提供了 eventHandlers prop,允许您监听嵌入过程中的各种事件,如 loaded、error、rendered 等。这对于调试和提供更好的用户体验至关重要。
  • 动态参数: 如果 embedUrl、reportId 或 accessToken 会动态变化,您可以使用 React 的 useState 和 useEffect 钩子来管理这些状态,并在它们更新时重新渲染 PowerBIEmbed 组件。
  • 性能: 嵌入 Power BI 视觉对象可能会对页面加载性能产生影响。考虑在必要时才加载和渲染这些组件,例如在用户滚动到特定区域时。
  • Power BI Desktop 中的名称查找:
    • 打开您的 Power BI 报表。
    • 切换到您要嵌入视觉对象所在的页面。
    • 在“视图”选项卡下,找到并点击“选择”窗格。
    • “选择”窗格将显示页面上所有元素(包括页面本身和所有视觉对象)的层级列表。您可以从中精确复制 pageName 和 visualName。

总结

通过 powerbi-client-react 库提供的 PowerBIEmbed 组件,在 React 应用中嵌入 Power BI 的特定视觉对象变得简单而高效。关键在于正确配置 embedConfig 对象,特别是 type: 'visual' 以及准确的 pageName 和 visualName。遵循本文提供的指南和最佳实践,您将能够成功地将 Power BI 的强大可视化功能集成到您的 React 应用中,为用户提供丰富的数据洞察。

以上就是Power BI 视觉对象在 React 应用中的嵌入实践指南的详细内容,更多请关注其它相关文章!


# react  # 您要  # 加载  # 这是  # 令牌  # 您可以  # 窗格  # 您的  #   # 数据可视化  # 后端  # access  # app  # 浏览器  # 编码  # 前端  # java  # javascript  # css  # ai  # 外包网站建设方案  # 淘宝不能找到关键词排名  # fre1314处seo  # 优化网站日志分析  # 武穴seo搜索推广资质  # 静态网站的建设技术  # 沈阳网站建设方案托管  # 小强强seo  # seo网赚vip教程  # 美团营销推广文案  # 关键在于  # 您需要 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: uc浏览器官网网页版使用 uc浏览器官网免费在线首页  J*aScript桌面应用_Electron多进程架构实战  《知到》打卡课程方法  店铺如何关联视频号推广?视频号推广有什么用?  易车网官网直达入口 易车网在线登录入口  Mac怎么关闭按键声音_Mac键盘打字音效设置  163邮箱网页版入口 163邮箱在线使用  歌词怎么展示在|直播|间视频号?有什么注意事项?  英雄联盟争者留名活动介绍  邮编号码查询app有哪些_邮编号码查询推荐app及使用体验  夸克浏览器资源嗅探怎么用 夸克浏览器网页资源下载技巧【教程】  Lar*el Socialite单设备登录策略:实现用户唯一会话管理  铁拳8在线玩 铁拳8在线秒玩入口  macosmonterey系统外接显示器驱动怎么安装_macosmonterey外接显示器驱动与分辨率调整  Animex动漫社正版在线入口 Animex动漫社动漫官方观看网  狙击外星人小游戏在线链接_狙击外星人小游戏网页链接  Yandex浏览器官方入口_Yandex搜索引擎中文版  PHP使用DOMDocument与XPath精准追加XML元素教程  食品生产用水只要符合国家规定的生活饮用水卫生标准就可以吗  SQL聚合查询、联接与筛选:GROUP BY 子句的正确使用与常见陷阱  iPhone 13 Pro Max如何设置桌面小组件_iPhone 13 Pro Max小组件添加指南  胃动力不足?试试这5个调理方法  《战地6》反作弊已成功拦截240万次作弊 发售第一周98%比赛没有作弊  路由器DNS怎么设置最快 优化DNS提升上网速度教程  win11怎么启用或禁用休眠 Win11 powercfg命令管理休眠文件【技巧】  网易云音乐闹钟铃声设置教程  PHP odbc_fetch_array 返回值处理:如何正确访问嵌套数组元素  OpenWeatherMap API:通过城市名称获取天气预报数据指南  Sublime怎么快速复制文件路径_Sublime右键菜单增强技巧  Win10通知横幅停留时间修改 Win10自定义通知显示时长【技巧】  在J*a中如何实现在线问答与评分系统_问答评分项目开发方法说明  word表格如何按某一列内容进行排序_Word表格按列排序方法  三星M34录音变声问题_Samsung M34麦克风调整  大众点评了却看不到是怎么回事  构建可配置的J*aScript加权点击计数器与共享总计功能  VB表达式书写规则解析  cad加载的线型看不见怎么办_cad线型不可见问题解决方法  Python项目中的条件导入:解决跨模块依赖问题  PHP中实现JSON数据数组分页的教程  MySQL多重JOIN技巧:高效关联同一表获取多角色信息  天天漫画2025最新入口 天天漫画永久有效登录入口  《金山词霸》语音翻译方法  使用 J*aScript 随机化 CSS Grid 布局中的元素顺序  如何通过settings.json个性化您的VS Code体验  Dash应用多值文本输入处理与类型转换教程  谷歌浏览器如何查找和删除恶意软件 谷歌浏览器内置安全清理工具使用教程  鲨鱼剧场app金币获取方法  创建您的便携版VS Code:让配置随身携带  PHP魔术方法__set与__isset:设计考量、性能权衡与静态分析的视角  win11如何开启单声道音频 Win11为听障用户合并左右声道【辅助】 

 2025-10-01

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.