<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        React Native開發封裝Toast與加載Loading組件示例

        來源:懂視網 責編:小采 時間:2020-11-27 22:08:01
        文檔

        React Native開發封裝Toast與加載Loading組件示例

        React Native開發封裝Toast與加載Loading組件示例:在App開發中,我們避免不了使用的兩個組件,一個Toast,一個網絡加載Loading,在RN開發中,也是一樣,React Native官方并沒有提供者這兩個常用組件,需要開發者自己根據需求來自定義。作者就在其他組件的基礎上在進行二次封裝,使用起來更加簡單,更具擴展性
        推薦度:
        導讀React Native開發封裝Toast與加載Loading組件示例:在App開發中,我們避免不了使用的兩個組件,一個Toast,一個網絡加載Loading,在RN開發中,也是一樣,React Native官方并沒有提供者這兩個常用組件,需要開發者自己根據需求來自定義。作者就在其他組件的基礎上在進行二次封裝,使用起來更加簡單,更具擴展性

        在App開發中,我們避免不了使用的兩個組件,一個Toast,一個網絡加載Loading,在RN開發中,也是一樣,React Native官方并沒有提供者這兩個常用組件,需要開發者自己根據需求來自定義。作者就在其他組件的基礎上在進行二次封裝,使用起來更加簡單,更具擴展性,同學們只需將Toast與Loading文件拖到項目中,install對應的組件庫即可

        效果圖

         

        Toast和Loading Demo地址

        https://github.com/guangqiang-liu/react-native-toastAndLoading

        Demo使用使用到的三方組件

      1. react-native-root-toast:用來顯示
      2. toast react-native-root-siblings:用來Loading在App最上層添加視圖
      3. react-native-vector-icons:IconFont
      4. 注意

        react-native-vector-icons 需要link 才能使用,同學們需要注意

        Toast組件

        toast組件這里作者分類8種不同的使用場景,目前能想到的就這多場景了,后面同學們有其他場景,可以自行添加即可,Toast組件中使用到的Icon圖標,同學們也可以自行修改

      5. 只顯示最簡單的文本的toast
      6. 只顯示最簡單的文本的長toast,顯示時長 + 500毫秒
      7. 顯示success的toast,success的Toast帶有一個成功的對號icon
      8. 顯示success的toast,支持回調,使用場景類似于登錄成功,顯示1500毫秒toast,然后在回調函數中跳轉到其他頁面
      9. 顯示success的長toast,顯示時長 + 500毫秒
      10. 顯示success的長toast,顯示時長 + 500毫秒,支持回調,使用場景類似于登錄成功,顯示1000毫秒toast,然后跳轉到其他頁面
      11. 顯示warning的toast,使用場景類似于登錄表單,手機號填寫錯誤
      12. 顯示報錯的toast,使用場景類似于登錄表單,提交表單失敗
      13.  Loading組件

        Loading組件最常用的使用場景就是網絡請求時,數據還沒有請求回來之前,頁面最上層顯示一個正在加載的loading框,一來能夠防止用戶在網絡請求時又做其他的操作,二來可以給用戶一個更好的體驗,不至于頁面空白,顯得突兀

        1. loading支持手動調用顯示:show()
        2. 支持手動關閉顯示:hidden()

        這里作者建議使用redux來控制Loading的顯示與隱藏,這樣不用在每一個需要網絡請求的頁面都手動去調用顯示與隱藏,更高端的Loading使用技巧可以參照作者的 https://github.com/guangqiang-liu/OneM

        Toast核心源碼

        const Toast = {
        
         toast: null,
        
         show: msg => {
         this.toast = RootToast.show(msg, {
         position: 0,
         duration: 1500
         })
         },
        
         showLong: msg => {
         this.toast = RootToast.show(msg, {
         position: 0,
         duration: 2000
         })
         },
        
         showSuccess: (msg, options) => {
         let toast = RootToast.show(
         Platform.OS === 'ios' ?
         <View style={styles.container}>
         <Icon name='check' size={50} color={'#fff'}/>
         <Text style={styles.message}>{msg}</Text>
         </View> : msg, {
         duration: 1500,
         position: RootToast.positions.CENTER,
         ...options,
         })
         setTimeout(function () {
         RootToast.hide(toast)
         typeof options === 'function' ? options && options(): null
         }, 2000)
         },
        
         showLongSuccess: (msg, options) => {
         let toast = RootToast.show(
         Platform.OS === 'ios' ?
         <View style={styles.container}>
         <Icon name='check' size={50} color={'#fff'}/>
         <Text style={styles.message}>{msg}</Text>
         </View> : msg, {
         duration: 2000,
         position: RootToast.positions.CENTER,
         ...options,
         })
         setTimeout(function () {
         RootToast.hide(toast)
         typeof options === 'function' ? options && options(): null
         }, 2500)
         },
        
         showWarning: (msg, options) => {
         let toast = RootToast.show(
         Platform.OS === 'ios' ?
         <View style={styles.container}>
         <Icon name='warning' size={40} color={'#fff'}/>
         <Text style={styles.message}>{msg}</Text>
         </View> : msg, {
         duration: RootToast.durations.SHORT,
         position: RootToast.positions.CENTER,
         ...options,
         })
         setTimeout(function () {
         RootToast.hide(toast)
         }, RootToast.durations.SHORT + 500)
         },
        
         showError: (msg, options) => {
         let toast = RootToast.show(
         Platform.OS === 'ios' ?
         <View style={styles.container}>
         <Icon name='close' size={40} color={'#fff'}/>
         <Text style={styles.message}>{msg}</Text>
         </View> : msg, {
         duration: RootToast.durations.SHORT,
         position: RootToast.positions.CENTER,
         ...options,
         })
         setTimeout(function () {
         RootToast.hide(toast)
         }, RootToast.durations.SHORT + 500)
         }
        
        }

        Loading核心源碼

        const HUD = {
        
         show: () => {
         sibling = new RootSiblings(
         <View style={styles.maskStyle}>
         <View style={styles.backViewStyle}>
         <ActivityIndicator size="large" color="white" />
         </View>
         </View>
         )
         },
        
         hidden: ()=> {
         if (sibling instanceof RootSiblings) {
         sibling.destroy()
         }
         }
        
        }

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        React Native開發封裝Toast與加載Loading組件示例

        React Native開發封裝Toast與加載Loading組件示例:在App開發中,我們避免不了使用的兩個組件,一個Toast,一個網絡加載Loading,在RN開發中,也是一樣,React Native官方并沒有提供者這兩個常用組件,需要開發者自己根據需求來自定義。作者就在其他組件的基礎上在進行二次封裝,使用起來更加簡單,更具擴展性
        推薦度:
        標簽: 組件 React native
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 中文字幕无码免费久久99| 久久久久久噜噜精品免费直播| 精品一区二区三区免费毛片爱 | 特级毛片爽www免费版| 四虎成人免费影院网址| 亚洲日韩AV一区二区三区中文| 青春禁区视频在线观看直播免费| 亚洲ts人妖网站| 好爽又高潮了毛片免费下载| 亚洲久热无码av中文字幕| 国产伦一区二区三区免费| 小说区亚洲自拍另类| 国产亚洲人成A在线V网站| 国产麻豆一精品一AV一免费| 亚洲图片一区二区| 免费a级毛片无码a∨蜜芽试看| 亚洲狠狠色丁香婷婷综合| 久久久久一级精品亚洲国产成人综合AV区 | 大陆一级毛片免费视频观看| 黄色免费在线网址| 亚洲精品无码永久在线观看你懂的| 无码人妻一区二区三区免费n鬼沢| 亚洲福利秒拍一区二区| 午夜寂寞在线一级观看免费| 十八禁的黄污污免费网站| 亚洲AV第一页国产精品| 好吊妞视频免费视频| a级毛片免费网站| 亚洲第一页在线视频| 国产一区视频在线免费观看| 成人片黄网站色大片免费观看cn| 亚洲综合男人的天堂色婷婷| 国产精品久免费的黄网站| A片在线免费观看| 亚洲最大无码中文字幕| 亚洲中文字幕无码日韩| 久久精品a一国产成人免费网站| WWW国产成人免费观看视频| 亚洲免费视频播放| 2048亚洲精品国产| 免费无码肉片在线观看|