zoukankan      html  css  js  c++  java
  • React Native 自定义单选功能

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

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

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

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

    效果如图:

    话不多说,直接上代码

    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')} />
            );
        }
  • 相关阅读:
    (转)五大常用算法之二:动态规划算法
    (转)五大常用算法之一:分治算法
    dict
    usaco2
    usaco3
    usaco4
    usaco1
    并查集
    洛谷P1428小鱼比可爱
    洛谷P1967货车运输
  • 原文地址:https://www.cnblogs.com/lijianyi/p/14863713.html
Copyright © 2011-2022 走看看