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

React Native開(kāi)發(fā)封裝Toast與加載Loading組件示例

 更新時(shí)間:2018年09月08日 15:25:52   作者:光強(qiáng)  
這篇文章主要介紹了React Native開(kāi)發(fā)封裝Toast與加載Loading組件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

在App開(kāi)發(fā)中,我們避免不了使用的兩個(gè)組件,一個(gè)Toast,一個(gè)網(wǎng)絡(luò)加載Loading,在RN開(kāi)發(fā)中,也是一樣,React Native官方并沒(méi)有提供者這兩個(gè)常用組件,需要開(kāi)發(fā)者自己根據(jù)需求來(lái)自定義。作者就在其他組件的基礎(chǔ)上在進(jìn)行二次封裝,使用起來(lái)更加簡(jiǎn)單,更具擴(kuò)展性,同學(xué)們只需將Toast與Loading文件拖到項(xiàng)目中,install對(duì)應(yīng)的組件庫(kù)即可

效果圖

 

Toast和Loading Demo地址

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

Demo使用使用到的三方組件

  • react-native-root-toast:用來(lái)顯示
  • toast react-native-root-siblings:用來(lái)Loading在App最上層添加視圖
  • react-native-vector-icons:IconFont

注意

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

Toast組件

toast組件這里作者分類(lèi)8種不同的使用場(chǎng)景,目前能想到的就這多場(chǎng)景了,后面同學(xué)們有其他場(chǎng)景,可以自行添加即可,Toast組件中使用到的Icon圖標(biāo),同學(xué)們也可以自行修改

  • 只顯示最簡(jiǎn)單的文本的toast
  • 只顯示最簡(jiǎn)單的文本的長(zhǎng)toast,顯示時(shí)長(zhǎng) + 500毫秒
  • 顯示success的toast,success的Toast帶有一個(gè)成功的對(duì)號(hào)icon
  • 顯示success的toast,支持回調(diào),使用場(chǎng)景類(lèi)似于登錄成功,顯示1500毫秒toast,然后在回調(diào)函數(shù)中跳轉(zhuǎn)到其他頁(yè)面
  • 顯示success的長(zhǎng)toast,顯示時(shí)長(zhǎng) + 500毫秒
  • 顯示success的長(zhǎng)toast,顯示時(shí)長(zhǎng) + 500毫秒,支持回調(diào),使用場(chǎng)景類(lèi)似于登錄成功,顯示1000毫秒toast,然后跳轉(zhuǎn)到其他頁(yè)面
  • 顯示warning的toast,使用場(chǎng)景類(lèi)似于登錄表單,手機(jī)號(hào)填寫(xiě)錯(cuò)誤
  • 顯示報(bào)錯(cuò)的toast,使用場(chǎng)景類(lèi)似于登錄表單,提交表單失敗

 Loading組件

Loading組件最常用的使用場(chǎng)景就是網(wǎng)絡(luò)請(qǐng)求時(shí),數(shù)據(jù)還沒(méi)有請(qǐng)求回來(lái)之前,頁(yè)面最上層顯示一個(gè)正在加載的loading框,一來(lái)能夠防止用戶(hù)在網(wǎng)絡(luò)請(qǐng)求時(shí)又做其他的操作,二來(lái)可以給用戶(hù)一個(gè)更好的體驗(yàn),不至于頁(yè)面空白,顯得突兀

  1. loading支持手動(dòng)調(diào)用顯示:show()
  2. 支持手動(dòng)關(guān)閉顯示:hidden()

這里作者建議使用redux來(lái)控制Loading的顯示與隱藏,這樣不用在每一個(gè)需要網(wǎng)絡(luò)請(qǐng)求的頁(yè)面都手動(dòng)去調(diào)用顯示與隱藏,更高端的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()
 }
 }

}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談react 同構(gòu)之樣式直出

    淺談react 同構(gòu)之樣式直出

    這篇文章主要介紹了淺談react 同構(gòu)之樣式直出,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • react新版本生命周期鉤子函數(shù)及用法詳解

    react新版本生命周期鉤子函數(shù)及用法詳解

    這篇文章主要介紹了react新版本生命周期鉤子函數(shù)及用法詳解,本文通過(guò)示例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • react項(xiàng)目從新建到部署的實(shí)現(xiàn)示例

    react項(xiàng)目從新建到部署的實(shí)現(xiàn)示例

    這篇文章主要介紹了react項(xiàng)目從新建到部署的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 記一次react前端項(xiàng)目打包優(yōu)化的方法

    記一次react前端項(xiàng)目打包優(yōu)化的方法

    這篇文章主要介紹了記一次react前端項(xiàng)目打包優(yōu)化的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • React?Native?的動(dòng)態(tài)列表方案探索詳解

    React?Native?的動(dòng)態(tài)列表方案探索詳解

    這篇文章主要為大家介紹了React?Native?的動(dòng)態(tài)列表方案探索示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • React?Hooks項(xiàng)目實(shí)戰(zhàn)

    React?Hooks項(xiàng)目實(shí)戰(zhàn)

    React?Hooks是React?16.8版本引入的新特性,它使得在函數(shù)組件中也能夠使用狀態(tài)(state)和其他React特性,本文就來(lái)詳細(xì)介紹一下React?Hooks項(xiàng)目實(shí)戰(zhàn),感興趣的可以了解一下
    2023-11-11
  • 簡(jiǎn)易的redux?createStore手寫(xiě)實(shí)現(xiàn)示例

    簡(jiǎn)易的redux?createStore手寫(xiě)實(shí)現(xiàn)示例

    這篇文章主要介紹了簡(jiǎn)易的redux?createStore手寫(xiě)實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 淺談react+es6+webpack的基礎(chǔ)配置

    淺談react+es6+webpack的基礎(chǔ)配置

    下面小編就為大家?guī)?lái)一篇淺談react+es6+webpack的基礎(chǔ)配置。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Zustand介紹與使用 React狀態(tài)管理工具的解決方案

    Zustand介紹與使用 React狀態(tài)管理工具的解決方案

    本文主要介紹了Zustand,一種基于React的狀態(tài)管理庫(kù),Zustand以簡(jiǎn)潔易用、靈活性高及最小化原則等特點(diǎn)脫穎而出,旨在提供簡(jiǎn)單而強(qiáng)大的狀態(tài)管理功能
    2024-10-10
  • 淺析history 和 react-router 的實(shí)現(xiàn)原理

    淺析history 和 react-router 的實(shí)現(xiàn)原理

    react-router 版本更新非???但是它的底層實(shí)現(xiàn)原理確是萬(wàn)變不離其中,在本文中會(huì)從前端路由出發(fā)到 react-router 原理總結(jié)與分享,本文對(duì)history 和 react-router實(shí)現(xiàn)原理講解的非常詳細(xì),需要的朋友跟隨小編一起看看吧
    2023-08-08

最新評(píng)論