reactnative简略封装选项框

import React, {Component} from 'react';
import {
    View, Text, FlatList, TouchableOpacity, Modal
} from 'react-native';

//字段: data=选项数据 title=选项标题 field=显示字段 onSelect=选择的回调方法
export default class CSelect extends Component {

    constructor(props) {
        super(props);
        this.state = {visible: false}
    }

    componentDidMount() {
    }

    showSelect() {
        this.setState({visible: true});
    }

    hiddenSelect() {
        this.setState({visible: false});
    }

    render() {
        return (
            <View>
                <TouchableOpacity onPress={() => {
                    this.showSelect();
                }}>
                    <Text style={{fontSize:30}}>{this.props.title}</Text>
                </TouchableOpacity>
                <Modal
                    animationType={"slide"}
                    transparent={false}
                    visible={this.state.visible}
                    onRequestClose={() => {
                        this.hiddenSelect();
                    }}
                >
                    <View style={{marginTop: 22}}>
                        <FlatList
                            data={this.props.data}
                            renderItem={({item}) =>
                                <TouchableOpacity onPress={() => {
                                    this.hiddenSelect();
                                    this.props.onSelect(item);
                                }}>
                                    <Text style={{fontSize: 20}}>
                                        {/*{item.text}*/}
                                        {eval('item.' + this.props.field)}
                                        </Text>
                                </TouchableOpacity>}
                        />
                    </View>
                </Modal>
            </View>
        );
    }
}

使用

<CSelect data={alertdata} title={'测试'} field={'text'} onSelect={(item) => {
    // log(item);
}} />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值