亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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文件的詳細內(nèi)容,更多關于React預覽文件的資料請關注腳本之家其它相關文章!

相關文章

  • react PropTypes校驗傳遞的值操作示例

    react PropTypes校驗傳遞的值操作示例

    這篇文章主要介紹了react PropTypes校驗傳遞的值操作,結合實例形式分析了react PropTypes針對傳遞的值進行校驗操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2020-04-04
  • React-View-UI組件庫封裝Loading加載中源碼

    React-View-UI組件庫封裝Loading加載中源碼

    這篇文章主要介紹了React-View-UI組件庫封裝Loading加載樣式,主要包括組件介紹,組件源碼及組件測試源碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 關于React中setState同步或異步問題的理解

    關于React中setState同步或異步問題的理解

    相信很多小伙伴們都一直在疑惑,setState 到底是同步還是異步。本文就詳細的介紹一下React中setState同步或異步問題,感興趣的可以了解一下
    2021-11-11
  • React?Hydrate原理源碼解析

    React?Hydrate原理源碼解析

    這篇文章主要為大家介紹了React?Hydrate原理源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • React日期時間顯示組件的封裝方法

    React日期時間顯示組件的封裝方法

    這篇文章主要為大家詳細介紹了React日期時間顯示組件的封裝方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • React實現(xiàn)分頁效果

    React實現(xiàn)分頁效果

    這篇文章主要為大家詳細介紹了React實現(xiàn)分頁效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • React Native 集成 iOS 原生功能(打印機功能為例)

    React Native 集成 iOS 原生功能(打印機功能為例)

    在 React Native 項目中集成 iOS 原生功能是一個常見需求,本文將同樣以打印機功能為例,詳細介紹如何在 React Native 項目中集成 iOS 原生功能,感興趣的朋友一起看看吧
    2024-12-12
  • react如何利用useRef、forwardRef、useImperativeHandle獲取并處理dom

    react如何利用useRef、forwardRef、useImperativeHandle獲取并處理dom

    這篇文章主要介紹了react如何利用useRef、forwardRef、useImperativeHandle獲取并處理dom,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-10-10
  • react ant-design Select組件下拉框map不顯示的解決

    react ant-design Select組件下拉框map不顯示的解決

    這篇文章主要介紹了react ant-design Select組件下拉框map不顯示的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React-Native做一個文本輸入框組件的實現(xiàn)代碼

    React-Native做一個文本輸入框組件的實現(xiàn)代碼

    這篇文章主要介紹了React-Native做一個文本輸入框組件的實現(xiàn)代碼,非常具有實用價值,需要的朋友可以參考下
    2017-08-08

最新評論