最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React實現(xiàn)預覽展示docx和Excel文件

 更新時間:2024年02月03日 16:14:26   作者:郭_昊  
這篇文章主要為大家詳細介紹了如何使用React實現(xiàn)預覽展示docx和Excel文件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

React預覽docx文件

封裝DocxView組件,用于顯示docx文件的預覽,支持加載loading效果

安裝依賴

npm i docx-preview
import React, { useEffect, useRef, useState } from 'react'
import * as docx from 'docx-preview'
import { Spin } from 'antd'
import { askDocApiUrls } from 'src/shared/url-map'

export interface Props {
  fileInfo: string
}

const DocxView = (props: Props) => {
  const { fileInfo } = props
  const [isLoading, setIsLoading] = useState<boolean>(true)
  const docxContainerRef = useRef<HTMLDivElement | null>(null)

  useEffect(() => {
    const fetchData = async () => {
      try {
        const response = await fetch(fileInfo)
        const data = await response.blob()
        const containerElement = docxContainerRef.current
        if (containerElement) {
          docx.renderAsync(data, containerElement).then(() => {
            console.info('docx: finished')
            setIsLoading(false)
          })
        }
      } catch (error) {
        setIsLoading(false)
        console.error('Error fetching or rendering document:', error)
      }
    }

    fetchData()
  }, [fileInfo])

  return (
    <div className="relative h-full">
      <div ref={docxContainerRef} className="h-full" />
      {isLoading && (
        <div className="absolute inset-0 flex items-center justify-center bg-white bg-opacity-75">
          <Spin size="large" />
        </div>
      )}
    </div>
  )
}

export default DocxView

React預覽展示excel文件

封裝了ExcelView來展示excel文件,支持顯示loading

1.安裝依賴

npm i @js-preview/excel

2.源碼

import React, { useEffect, useRef, useState } from 'react'
import jsPreviewExcel, { JsExcelPreview } from '@js-preview/excel'
import '@js-preview/excel/lib/index.css'
import { Spin } from 'antd'

export interface Props {
  fileInfo: string
}

const ExcelView = (props: Props) => {
  const { fileInfo } = props
  const excelContainerRef = useRef<HTMLDivElement | null>(null)
  const excelPreviewerRef = useRef<JsExcelPreview | null>(null) // 保存 myExcelPreviewer 的引用
  const [isLoading, setIsLoading] = useState<boolean>(true)

  useEffect(() => {
    const containerElement = excelContainerRef.current

    if (containerElement && !excelPreviewerRef.current) {
      // 初始化 myExcelPreviewer,并保存引用
      const myExcelPreviewer = jsPreviewExcel.init(containerElement)
      excelPreviewerRef.current = myExcelPreviewer

      setIsLoading(true) // 開始加載時設置 loading 狀態(tài)

      myExcelPreviewer
        .preview(fileInfo)
        .then(() => {
          setIsLoading(false) // 預覽完成后取消 loading 狀態(tài)
          console.info('預覽完成')
        })
        .catch((e) => {
          setIsLoading(false) // 預覽失敗后取消 loading 狀態(tài)
          console.info('預覽失敗', e)
        })
    }
  }, [fileInfo])

  return (
    <div className="relative h-full">
      <div ref={excelContainerRef} className="h-full" />
      {isLoading && (
        <div className="absolute inset-0 flex items-center justify-center bg-white bg-opacity-75">
          <Spin size="large" />
        </div>
      )}
    </div>
  )
}

export default ExcelView

以上就是React實現(xiàn)預覽展示docx和Excel文件的詳細內容,更多關于React預覽文件的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解react組件通訊方式(多種)

    詳解react組件通訊方式(多種)

    這篇文章主要介紹了詳解react組件通訊方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • ReactJS中的自定義組件實例代碼

    ReactJS中的自定義組件實例代碼

    React 是一個用于構建用戶界面的 JAVASCRIPT 庫。這篇文章主要介紹了ReactJS中的自定義組件的代碼講解,需要的朋友可以參考下
    2019-11-11
  • React父組件調用子組件中的方法實例詳解

    React父組件調用子組件中的方法實例詳解

    最近做一個React項目,所有組件都使用了函數式組件,遇到一個父組件調用子組件方法的問題,下面這篇文章主要給大家介紹了關于React父組件調用子組件中方法的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • React 組件間的通信示例

    React 組件間的通信示例

    這篇文章主要介紹了React 組件間的通信示例,主要通信劃分為三種,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • React中的Component組件詳解

    React中的Component組件詳解

    本章節(jié),我們將一起探討 React 中類組件和函數組件的定義,不同組件的通信方式,以及常規(guī)組件的強化方式,幫助你全方位認識 React 組件,從而對 React 的底層邏輯有進一步的理解,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • React組件與事件的創(chuàng)建使用教程

    React組件與事件的創(chuàng)建使用教程

    react事件綁定時。this并不會指向當前DOM元素。往往使用bind來改變this指向,今天通過本文給大家介紹React事件綁定的方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-02-02
  • 如何使用Next.js?+?Prisma?+?MySQL開發(fā)全棧項目

    如何使用Next.js?+?Prisma?+?MySQL開發(fā)全棧項目

    在Next.js項目的任何地方都可以使用Prisma來訪問數據庫,Prisma提供了豐富的查詢方法,滿足您在項目中的各種需求,這篇文章主要介紹了如何使用Next.js+Prisma+MySQL開發(fā)全棧項目的相關資料,需要的朋友可以參考下
    2026-03-03
  • React?錯誤邊界Error?Boundary使用示例解析

    React?錯誤邊界Error?Boundary使用示例解析

    這篇文章主要為大家介紹了React?錯誤邊界Error?Boundary使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • React中用@符號編寫文件路徑實現(xiàn)方法介紹

    React中用@符號編寫文件路徑實現(xiàn)方法介紹

    在Vue中,我們導入文件時,文件路徑中可以使用@符號指代src目錄,極大的簡化了我們對路徑的書寫。但是react中,要想實現(xiàn)這種方式書寫文件路徑,需要寫配置文件來實現(xiàn)
    2022-09-09
  • React Native中Navigator的使用方法示例

    React Native中Navigator的使用方法示例

    導航組件Navigator可以讓我們客戶端在不同的頁面見進行切換,下面這篇文章主要給大家介紹了關于React Native中Navigator的使用方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-10-10

最新評論

仙桃市| 丰都县| 延长县| 靖边县| 拉萨市| 辽源市| 桂平市| 堆龙德庆县| 元阳县| 饶平县| 弥勒县| 乾安县| 信阳市| 龙里县| 威信县| 利辛县| 东丰县| 东山县| 抚州市| 红安县| 江都市| 宁德市| 仪征市| 图木舒克市| 察隅县| 千阳县| 丹寨县| 余江县| 阳泉市| 乐昌市| 介休市| 资源县| 玉屏| 安塞县| 山东省| 乐清市| 祥云县| 获嘉县| 峨山| 尚志市| 康定县|