react-native-root-toast的使用

给大家安利一款可以在iosandroid上通用的Toast组件: react-native-root-toast
现在开源的Toast组件一大堆,为什么要选用这个呢?原因如下:

  • javascript解决方案,免去了原生安装的各种繁杂步骤,直接一行npm install react-native-root-toast --save搞定
  • 同时兼容iOSAndroid,使用完全一致的接口,不用再为同时兼容两个平台再写额外的代码
  • 可以自定义toast的各类属性(显示时间、位置、延时、动画、阴影等)
  • 同时支持两种调用形式(可以使用API调用,也可以作为Component直接放在render里面进行控制)

安装

npm install [React](http://lib.csdn.net/base/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里面加入组件,并通过visible属性对Toast进行控制.
的属性和API调用时传入的选项相同.toast内容添加在元素内部:message

注意:通过组件方式调用的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 This is a message;
    }
}

报错 null is not an object(evaluting '_this._root_setNativeProps')

修改方法:
在源文件lib/ToastContainer.js中改下代码

componentWillUnmount = () => {
   this._root&&this._hide();
};

参考:
http://blog.csdn.net/sinat_17775997/article/details/60954255
https://github.com/magicismight/react-native-root-toast/issues/24

你可能感兴趣的:(react-native-root-toast的使用)