React Native 自定义单选功能

摘要:
Render(){return(<radio list<{/*radio list*/}{this.radio list()}<索引)=>ComponentSuggestItemViewitem={item}/>位置)=>}否则{item.sel=false;}无线电组件ComponentSuggestItemViewrender(){return(<

项目中我们经常会遇到单选的功能,有很多第三方库也有类似功能,譬如Ant Design Mobile RN库中的Radio

但是这些样式是固定的,当我们需要自定义单选图标,完全自定义时,就需要我们自己实现了。

下面简述下自定义单选的功能,

本质是为每条数据绑定一个选中标记sel,然后通过该标记来实现单选

效果如图:

React Native 自定义单选功能第1张

话不多说,直接上代码

state = {
        suggestlist: [{ sel: true, title: '单选1' }, { sel: false, title: '单选2' }, { sel: false, title: '单选3' }, { sel: false, title: '单选4' }],
    };

    render() {
        return (
            <View style={style.item_bg}>

                <Text style={style.item_title}>单选列表</Text>
                {/* 单选列表 */}
                {this.radiolist()}

            </View>
        );
    }

    private radiolist() {
        return this.state.suggestlist.map((item, index) => {
            return (
                <TouchableOpacity onPress={() => {
                    this.click(index)
                }} key={index}>
                    <ComponentSuggestItemView
                        item={item}
                    />
                </TouchableOpacity>
            )
        })
    }

    public click(index: number) {
        this.state.suggestlist.forEach((item, position) => {
            if (index == position) {
                item.sel = true;
            } else {
                item.sel = false;
            }
        });

        this.setState({
            suggestlist: this.state.suggestlist
        });

    }
单选组件 ComponentSuggestItemView
render() {
        return (
            <View style={style.item_top_btn}>
                {this.showImg()}
                <Text style={style.item_top_right_title}>{this.props.item.title}</Text>   
            </View>
        );
    }

    private showImg() {
        if (this.props.item.sel) {
            return (
                <Image source={require('../../../image/icon_check.png')} />
            );
        }
        return (
            <Image source={require('../../../image/icon_uncheck.png')} />
        );
    }

免责声明:文章转载自《React Native 自定义单选功能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【STM32F429】第3章 ThreadX操作系统介绍转载 uboot 命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF下的右键菜单隐藏

WPF中,右键菜单一旦设置,就很难控制其不让打开,点击右键一定会弹出,如果只是隐藏几个项还是没问题的,但是如果所有项都隐藏了,还是会弹出一个空白内容的右键菜单,难看死,也没有给任何后台控制的方法,于是找到了一个前台的属性可以控制。 <Window x:Class="WPFTest.Window1" xmlns="http://sche...

mybatis 遇到空串无法判断

sql 语句中对传入的关键字进行判断,如果是空或者空串则不进入条件 <if test="query.keyword !=null and query.keyword != ''"> and (t.id like concat('%',#{query.keyword},'%') or...

vue之provide和inject

官方说: 当我们需要从父组件向子组件传递数据时,我们使用 props。想象一下这样的结构:有一些深度嵌套的组件,而深层的子组件只需要父组件的部分内容。在这种情况下,如果仍然将 prop 沿着组件链逐级传递下去 个人理解: 在祖先组件中定义provide(提供)给后代组件的数据或方法,在后代组件中可以通过inject(接受)提供的数据或方法 举个栗子, 想做...

PowerDesigner 15 使用技巧

1、  找回PowerDesigner的Palette工具栏 Tools(工具栏) >>  customsize toolbars(自定义工具栏)>> palette(调色板)勾选 2、  批量修改Table中文字的格式 Tools(工具栏) >> 显示设置(Display Preference) >> Ta...

文档兼容性定义,使ie按指定的版本解析

   作为开发人员,特别是作为Web的前端开发人员 ,最悲催的莫过于要不断的,不断的去调试各种浏览器的显示效果,而这其中最让人头痛的莫过于MS下的IE系列浏览器,在IE系列中的调试我们将会发现没有一个是好伺候的,于是不得不学习各种Hack技术来满足各种浏览器之间的兼容。在这种痛苦中不断的挣扎,MS可能也实在是看不下去了,于是在IE8开始,微软引入了文档兼...

layui动态创建Tab、Tab右键功能

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-...