close

轉自 bbs.reactnative.cn/topic/444/同时兼容ios与android的toast组件

--

給大家安利一款可以在iOS和Android上通用的Toast組件: react-native-root-toast
現在開源的Toast組件一大堆,為什麼要選用這個呢?原因如下:

 

  1. 純javascript解決方案,免去了原生安裝的各種繁雜步驟,直接一行npm install react-native-root-toast --save搞定
  2. 同時兼容iOS和Android,使用完全一致的接口,不用再為同時兼容兩個平台再寫額外的代碼
  3. 可以自定義toast的各類屬性(顯示時間、位置、延時、動畫、陰影等)
  4. 同時支持兩種調用形式(可以使用API​​調用,也可以作為Component直接放在render裡面進行控制)

安裝

 

npm install react-native-root-toast --save

搞定!

 

使用

 

可以支持兩種不同的調用方式. 
如果你喜歡API方式的調用

 

import Toast from 'react-native-root-toast'; // 引入类库

// 通过调用 Toast.show(message, options); 可以在屏幕上显示一个toast,并返回一个toast实例
let toast = Toast.show('This is a message', {
    duration: Toast.durations.LONG, // toast显示时长
    position: Toast.positions.BOTTOM, // toast位置
    shadow: true, // toast是否出现阴影
    animation: true, // toast显示/隐藏的时候是否需要使用动画过渡
    hideOnPress: true, // 是否可以通过点击事件对toast进行隐藏
    delay: 0, // toast显示的延时
    onShow: () => { 
        // toast出现回调(动画开始时)
    },
    onShown: () => {
        // toast出现回调(动画结束时)
    },
    onHide: () => {
        // toast隐藏回调(动画开始时)
    },
    onHidden: () => {
        // toast隐藏回调(动画结束时)
    }
});

// 也可以通过调用Toast.hide(toast); 手动隐藏toast实例
setTimeout(function () {
    Toast.hide(toast);
}, 500);

 

你也可以通過React組件方式調用Toast.在render裡面加入<Toast />組件,並通過visible屬性對Toast進行控制. 
<Toast />的屬性和API調用時傳入的選項相同.toast內容添加在元素內部: <Toast>message</Toast>
注意:
通過組件方式調用的toast,在<Toast />組件componentWillUnmount的時候會自動消失

 

import React, {Component} from 'react-native';
import Toast from 'react-native-root-toast';

class Example extends Component{
    constructor() {
        super(...arguments);
        this.state = {
            visible: false
        };
    }

    componentDidMount() {
        setTimeout(() => this.setState({
            visible: true
        }), 2000); // show toast after 2s

        setTimeout(() => this.setState({
            visible: false
        }), 5000); // hide toast after 5s
    };

    render() {
        return <Toast
            visible={this.state.visible}
            position={50}
            shadow={false}
            animation={false}
            hideOnPress={true}
        >This is a message</Toast>;
    }
}

 

下面是演示動圖
示例圖

--

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 dizzy03 的頭像
    dizzy03

    碎碎念

    dizzy03 發表在 痞客邦 留言(0) 人氣()