<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
        主站蜘蛛池模板: 天黑黑影院在线观看视频高清免费 | 亚洲国产精品尤物YW在线观看| 亚洲网站在线播放| 毛茸茸bbw亚洲人| 老司机午夜性生免费福利| 日本高清免费aaaaa大片视频| 亚洲夂夂婷婷色拍WW47| 日韩伦理片电影在线免费观看| 亚洲国产成人精品无码区二本| 日日AV拍夜夜添久久免费| 日韩国产精品亚洲а∨天堂免| 免费一级毛片在线播放| 一级一级毛片免费播放| 国产精品国产亚洲精品看不卡| 无码日韩精品一区二区免费暖暖 | 亚洲国产午夜精品理论片| 男女超爽刺激视频免费播放| 亚洲一区AV无码少妇电影| 成人免费视频一区| 国产精品亚洲AV三区| 免费人成网站在线高清| 久久久久久久久久免免费精品 | 亚洲国产精品成人一区| 成在人线av无码免费高潮水| 久久精品国产亚洲av成人| h片在线免费观看| 国产亚洲精彩视频| 亚洲精品无码成人AAA片| 国产精品爱啪在线线免费观看| 久久久国产亚洲精品| 亚洲区小说区图片区| 91精品手机国产免费| 亚洲乱码日产精品一二三| 色久悠悠婷婷综合在线亚洲| 一级成人a毛片免费播放| 久久精品熟女亚洲av麻豆| 国产精品亚洲片在线观看不卡 | 亚洲黄网在线观看| 暖暖日本免费在线视频| a级毛片100部免费观看| 亚洲欧美日韩自偷自拍|