native react 图片多选_[RN] React Native 实现 多选标签

import React, {Component} from 'react';

import {Button, StyleSheet, Text, TouchableOpacity, View}from 'react-native';

exportdefault classTestMarkCheck extends Component {static defaultProps ={

multiList: [

{"id": "0","name": "音乐",select: false},

{"id": "1","name": "美术",select: false},

{"id": "2","name": "舞蹈",select: false},

]

};

constructor(props) {

super(props);this.state ={

multiData:this.props.multiList,

selectMultiItem: [],

}

}

_selectMultiItemPress(item) {if (item.select) {this.state.selectMultiItem.splice(this.state.selectMultiItem.findIndex(function (x) {return x ===item.id;

}),1);

}else{this.state.selectMultiItem.push(item.id);

}this.state.multiData[item.id].select = !item.select;this.setState({multiData: this.state.multiData});

}

_submitMultiPress() {

alert(`选中了${JSON.stringify(this.state.selectMultiItem)}`)

}

_renderMultiMark() {

let multiData= this.state.multiData;

let len=multiData.length;

let menuArr=[];for (let i = 0; i < len; i++) {

let item=multiData[i];if (item.select) {

menuArr.push(

onPress={() => this._selectMultiItemPress(item)} style={[styles.markRow, styles.markChecked]}>

{item.name}

)

}else{

menuArr.push(

onPress={() => this._selectMultiItemPress(item)} style={[styles.markRow, styles.markUnCheck]}>

{item.name}

)

}

}return({menuArr});

}

render() {return({this._renderMultiMark()} this._submitMultiPress()}/>

);

}

}const styles =StyleSheet.create({

container: {

flex:1,

backgroundColor:"white",

},

multiBox: {

flexDirection:'row',

alignItems:'center',

marginTop:20,

marginBottom:20,

paddingLeft:20,

paddingRight:20,

},

markRow: {

width:90,

height:40,

lineHeight:40,

padding:10,

marginBottom:16,

marginRight:16,

borderRadius:24,

borderWidth:0.5,

},

markChecked: {

backgroundColor:"#aaa",

borderColor:"white",

},

markUnCheck: {

backgroundColor:"white",

borderColor:"#111",

},

markCheckedText: {

fontSize:15,

color:"white",

textAlign:"center",

},

markUnCheckText: {

fontSize:15,

color:"#000",

textAlign:"center",

},

});

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值