使用react-native-doc-viewer實(shí)現(xiàn)文檔預(yù)覽
react-native-doc-viewer文檔預(yù)覽
react-native項(xiàng)目要求實(shí)現(xiàn)word,excel,pdf,mp4,png等格式附件圖片的在線預(yù)覽,最終選用react-native-doc-viewer實(shí)現(xiàn),
具體步驟如下
1、安裝react-native-doc-viewer
(1) npm install react-native-doc-viewer --save
(2) react-native link react-native-doc-viewer
2、修改源代碼
(1) 因?yàn)閞eact-native-doc-viewer已經(jīng)很久沒有更新了,所以SdkVersion是23,比較低,將它修改成如下圖所示:
(2)找到下圖中左側(cè)的文件,將右側(cè)紅圈圈里面的代碼注釋掉
至此,所以安裝和配置完成,下面是寫代碼步驟
3、代碼實(shí)現(xiàn)
import OpenFile from 'react-native-doc-viewer'; //預(yù)覽附件 viewAttachment(attachment) { let fileTypeArr = ['xls', 'ppt', 'doc', 'xlsx', 'pptx', 'docx', 'png', 'jpg', 'pdf', 'mp4', 'txt']; if (fileTypeArr.indexOf(attachment.fileSuffix) >= 0) { if (Platform.OS === 'ios') { OpenFile.openDoc([{ url: attachment.filePath, fileNameOptional: attachment.fileName }], (error, url) => { if (error) { console.log(error); } else { console.log(url) } }) } else { OpenFile.openDoc([{ url: attachment.filePath, fileName: attachment.fileName, cache: false, fileType: attachment.fileSuffix }], (error, url) => { if (error) { console.error(error); } else { console.log(url) } }); } } else { Toast.show('app端暫不支持此種格式附件預(yù)覽,請(qǐng)去pc端預(yù)覽'); } }
應(yīng)用會(huì)打開手機(jī)上對(duì)應(yīng)的第三方軟件,做預(yù)覽。
react-native初體驗(yàn)的總結(jié)
一、前提知識(shí)點(diǎn)
- RN中文網(wǎng)鏈接 https://www.react-native.cn/docs/getting-started
- html、JavaScript、css基礎(chǔ)
- es6+等新的概念
- react、redux相關(guān)知識(shí)
- 如果需要用ts語法,還需要了解typescript相關(guān)知識(shí)點(diǎn)
- 數(shù)據(jù)請(qǐng)求,官方中有推薦的,我這里選擇axios
二、開發(fā)前后相關(guān)的一些配置
react-native相關(guān)知識(shí)點(diǎn)可以參考官方文檔進(jìn)行學(xué)習(xí),總結(jié)了幾點(diǎn)基本的
- RN開發(fā)需要的環(huán)境(mac,windows),參考官方文檔即可
- RN開發(fā)利用相關(guān)腳手架初始化項(xiàng)目,參考官方文檔即可
- RN打包需要用的簽名創(chuàng)建,及打包流程,參考官方文檔即可
- RN開發(fā)過程中用到的模擬器(我這里用的mumu模擬器)
- RN開發(fā)過程中用到的debugger工具(推薦使用react-native-debugger)
三、開發(fā)項(xiàng)目中用到的知識(shí)
學(xué)習(xí)的時(shí)候,我這里主要從以下幾方面進(jìn)行學(xué)習(xí)的,列出的大部分是npm包名
- 設(shè)置app啟動(dòng)圖片 react-native-splash-screen
- 頁面跳轉(zhuǎn) react-navigation 起到路由的作用
- 數(shù)據(jù)存儲(chǔ) @react-native-async-storage/async-storage
- 嵌入web react-native-webview
- 使用相機(jī) react-native-camera
- 掃描二維碼 react-native-qrcode-scanner
- 文件上傳 react-native-document-picker react-native-doc-viewer
- 圖片上傳 react-native-image-picker
- 輪播圖 react-native-swiper
- 背景漸變 react-native-linear-gradient
- 頂部狀態(tài)欄 react-native 提供的組件 StatusBar
- toast提示 react-native-root-toast,會(huì)用到 react-native-root-siblings
- 手勢(shì) react-native-gesture-handler
- 高德地圖 react-native-amap3d
四、ui庫
五、項(xiàng)目搭建
官網(wǎng)中提供的初始化模板
npx react-native init projectName --template react-native-template-typescript
六、根據(jù)需要安裝對(duì)應(yīng)依賴
建議加上npm進(jìn)行依賴搜索,或者去npm官網(wǎng)搜索,eg: react-native-camera npm
因?yàn)槲疫@里項(xiàng)目初始化的rn版本為0.63.4,所以大部分依賴都是直接link之后就可以正常使用的。
七、開發(fā)和調(diào)試
靜態(tài)頁面的開發(fā)其實(shí)跟web端一樣,組件的合理利用就行。會(huì)涉及一些交互
1.物理返回鍵
const handle = ()=>{ ? ? // 響應(yīng)事件處理 } // 訂閱 BackHandler.addEventListener('hardwareBackPress', handle); // 移除 BackHandler.removeEventListener('hardwareBackPress', handle);
2.跨頁面通信
const handle = (params)=>{ ? ? // 響應(yīng)事件處理 } // 訂閱 DeviceEventEmitter.addListener('eventKey', handle); // 移除 DeviceEventEmitter.removeListener('eventKey', handle);
// 觸發(fā) DeviceEventEmitter.emit('eventKey', params);
3. formData文件上傳
圖片或者文件上傳的時(shí)候,需要關(guān)閉debugger模式,不然會(huì)出現(xiàn)異常。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Jira 任務(wù)管理系統(tǒng)項(xiàng)目總結(jié)講解
這篇文章主要為大家介紹了Jira 任務(wù)管理系統(tǒng)項(xiàng)目總結(jié)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08React通過conetxt實(shí)現(xiàn)多組件傳值功能
Context 提供了一種在組件之間共享此類值的方式,而不必顯式地通過組件樹的逐層傳遞 props。本文給大家介紹React通過conetxt實(shí)現(xiàn)多組件傳值功能,感興趣的朋友一起看看吧2021-10-10React?Native中原生實(shí)現(xiàn)動(dòng)態(tài)導(dǎo)入的示例詳解
在React?Native社區(qū)中,原生動(dòng)態(tài)導(dǎo)入一直是期待已久的功能,在這篇文章中,我們將比較靜態(tài)和動(dòng)態(tài)導(dǎo)入,學(xué)習(xí)如何原生地處理動(dòng)態(tài)導(dǎo)入,以及有效實(shí)施的最佳實(shí)踐,希望對(duì)大家有所幫助2024-02-02React Native之prop-types進(jìn)行屬性確認(rèn)詳解
本篇文章主要介紹了React Native之prop-types進(jìn)行屬性確認(rèn)詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12React中重新實(shí)現(xiàn)強(qiáng)制實(shí)施表單的流程步驟
這篇文章主要介紹了React中重新實(shí)現(xiàn)強(qiáng)制實(shí)施表單的流程步驟,就像設(shè)計(jì)人員一樣,在添加邏輯之前,您需要為不同的狀態(tài)“模擬”或創(chuàng)建“模擬”,例如,這里只是表單的視覺部分的模擬,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-05-05react拖拽react-beautiful-dnd一維數(shù)組二維數(shù)組拖拽功能
二維數(shù)組可以拖拽,但是不可以編輯+拖拽,如果想要實(shí)現(xiàn)編輯+拖拽,還是需要轉(zhuǎn)換成一維數(shù)組,本文給大家介紹react拖拽react-beautiful-dnd的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧2024-03-03