国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

React-pdf仍在加載,即使在Syncfusion Tab中加載文件
P粉658954914
P粉658954914 2023-09-13 13:28:36
0
1
788

我正在使用Syncfusion Tab來根據(jù)選項(xiàng)卡顯示多種類型的檔案。 我想要顯示的一種文件類型是PDF類型。 不幸的是,與我嘗試顯示的所有其他類型不同,這個(gè)類型的文件有點(diǎn)阻塞我。

我使用react-pdf(我不想使用其他任何東西)來顯示PDF,並在選擇正確的選項(xiàng)卡時(shí)加載文件。如果我們切換選項(xiàng)卡,檔案會(huì)被清空。我使用useQuery來向伺服器發(fā)送請(qǐng)求並從資料庫取得檔案。我可以在控制臺(tái)列印文件,但由於某種原因,在選項(xiàng)卡組件中,react-pdf停留在加載狀態(tài)。

我嘗試使用只有react-pdf元件和呼叫useQuery來檢索文件的按鈕來複製相同的事情,它可以正常工作,PDF被顯示出來,但在選項(xiàng)卡元件中不行。

我的程式碼如下:

使用查詢:

const { status, data, error, isFetching, refetch } = useQuery(['facture', id], async () => {
     const data = await getUniqueCassandraFile(id)
     setFile(data.rows[0].file)
     return data.rows[0].file
}, {
     enabled: false,
     refetchOnWindowFocus: false
})

renderPdf函數(shù)在另一個(gè)檔案中,以及其他根據(jù)類型的渲染函數(shù),file參數(shù)是父元件的狀態(tài),該狀態(tài)由useQuery結(jié)果(在父元件中)更新。每次選擇新的選項(xiàng)卡時(shí),查詢都會(huì)重新取得(選擇事件):

export const renderPdf = (id, file) => {
    if(!file){
        return waiting(id)
    }
    return (
        <div key={id} className='file_container'>
            <Document file={`data:application/pdf;base64,${file}`} style={{height:50+'vh'}}>
                <Page size="A4" pageNumber={1} className="pdfFacture">
                </Page>
            </Document>
        </div>
    )
}

選項(xiàng)卡元件:

<div className="control-section tab-control-section">
   {chosenItem === -1 ? emptyDiv : 
   <TabComponent overflowMode="Scrollable" id="defaultTab" selecting={selecting} 
   selectedItem={chosenItem}>
      <TabItemsDirective>
      {
         header.map((item, index) => {
            return <TabItemDirective presentation={true} key={index} header={item} 
               content={{
                  template: tabContent, 
                  data: {content: content[index], type: item.type, id: item.id}}}/>
               })
            }
            </TabItemsDirective>
         </TabComponent>
      }
 </div>

以及用於建立每個(gè)選項(xiàng)卡的TabContent範(fàn)本:

const tabContent = (data) => {
   return <div dangerouslySetInnerHTML={{__html: ReactDOMServer.renderToStaticMarkup(
             isFetching ? emptyDiv :
             switchRender(data.id, data.type, file))}}>
   </div>;
};

P粉658954914
P粉658954914

全部回覆(1)
P粉127901279

您正在基於共享細(xì)節(jié)的選項(xiàng)卡選擇事件中載入檔案。因此,我們建議您在選項(xiàng)卡選取事件中載入文件,而不是選擇事件,以解決報(bào)告的問題。由於選取事件將在內(nèi)容呈現(xiàn)在DOM中後觸發(fā)。

https://ej2.syncfusion.com/react/documentation/api/tab#selected

#
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板