[RN] React Native 实现 多选标签
React Native 实现 多选标签
效果如下:

实现代码:
import React, {Component} from 'react';
import {Button, StyleSheet, Text, TouchableOpacity, View} from 'react-native';
export default class TestMarkCheck extends Component {
static defaultProps = {
multiList: [
{
"id": "",
"name": "音乐",
select: false
},
{
"id": "",
"name": "美术",
select: false
},
{
"id": "",
"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;
}), );
} 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 = ; i < len; i++) {
let item = multiData[i];
if (item.select) {
menuArr.push(
<TouchableOpacity
onPress={() => this._selectMultiItemPress(item)} style={[styles.markRow, styles.markChecked]}>
<Text style={styles.markCheckedText}>{item.name}</Text>
</TouchableOpacity>
)
} else {
menuArr.push(
<TouchableOpacity
onPress={() => this._selectMultiItemPress(item)} style={[styles.markRow, styles.markUnCheck]}>
<Text style={styles.markUnCheckText}>{item.name}</Text>
</TouchableOpacity>
)
}
}
return (
<View style={styles.multiBox}>
{menuArr}
</View>
);
}
render() {
return (
<View style={styles.container}>
{this._renderMultiMark()}
<Button title={"确定"} onPress={() => this._submitMultiPress()}/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: ,
backgroundColor: "white",
},
multiBox: {
flexDirection: 'row',
alignItems: 'center',
marginTop: ,
marginBottom: ,
paddingLeft: ,
paddingRight: ,
},
markRow: {
width: ,
height: ,
lineHeight: ,
padding: ,
marginBottom: ,
marginRight: ,
borderRadius: ,
borderWidth: 0.5,
},
markChecked: {
backgroundColor: "#aaa",
borderColor: "white",
},
markUnCheck: {
backgroundColor: "white",
borderColor: "#111",
},
markCheckedText: {
fontSize: ,
color: "white",
textAlign: "center",
},
markUnCheckText: {
fontSize: ,
color: "#000",
textAlign: "center",
},
});
成功企业家,五大基本能力:
产品 营销 团队 资本 财务
本博客地址: wukong1688
本文原文地址:https://www.cnblogs.com/wukong1688/p/11062409.html
转载请著名出处!谢谢~~
[RN] React Native 实现 多选标签的更多相关文章
- [RN] React Native 下实现底部标签(支持滑动切换)
上一篇文章 [RN] React Native 下实现底部标签(不支持滑动切换) 总结了不支持滑动切换的方法,此篇文章总结出 支持滑动 的方法 准备工作之类的,跟上文类似,大家可点击上文查看相关内容. ...
- [RN] React Native 下实现底部标签(不支持滑动切换)
底部标签是现在App的基本菜单实现 下面分别用 createBottomTabNavigator 和 createMaterialBottomTabNavigator 两种方法分别实现底部菜单 但此两 ...
- [RN] React Native 实现图片预览
[RN] React Native 实现图片预览 效果预览: 代码如下: 'use strict'; import React, {Component} from 'react'; import {I ...
- [RN] React Native 常见基本问题归纳总结
[RN] React Native 常见基本问题归纳总结 本问题总结涉及到版本为: "react": "16.8.3","react-native& ...
- [RN] React Native 关闭所有黄色警告
[RN] React Native 关闭所有黄色警告 console.ignoredYellowBox = ['Warning: BackAndroid is deprecated. Please u ...
- [RN] React Native 幻灯片效果 Banner
[RN] React Native 幻灯片效果 Banner 1.定义Banner import React, {Component} from 'react'; import {Image, Scr ...
- [RN] React Native 常用命令行
[RN] React Native 常用命令行 1.查看当前版本 react-native --version 或 react-native -v 2.创建指定版本的React Native项目 1) ...
- [RN] React Native 实现 类似QQ 登陆页面
[RN] React Native 实现 类似QQ 登陆页面 一.主页index.js 项目目录下index.js /** * @format */ import {AppRegistry} from ...
- React Native 系列(九) -- Tab标签组件
前言 本系列是基于React Native版本号0.44.3写的.很多的App都使用了Tab标签组件,例如QQ,微信等等,就是切换不同的选项,显示不同的内容.那么这篇文章将介绍RN中的Tab标签组件. ...
随机推荐
- 【More Effective C++ 条款5】对定制的“类型转换函数”保持警觉
1)C++允许内置数据类型之间进行隐式转换,比如char转int,int转double,对于内置数据类型的转换有详细的规则,但不管怎么样,这些都是语言提供的,相对安全,而且我们无法更改 对于自定义类的 ...
- 如何解决macbook pro摄像头不工作的问题
背景:上周用qq视频聊天都正常,这周突然显示检测不到摄像头.打开facetime和photo booth也显示“相机未连接”排查一切问题后只好给苹果客服打电话,在客服的帮助下解决了这个问题. 解决办法 ...
- maven的基础入门
Maven是Java世界中一个很好使的项目管理工具,关于[好使]这个特性从项目的使用量上就能体现出来,虽然说现在有更好使的Gradle,但是Maven的地位也不会那么轻易被撼动,支持者还是多多. Ma ...
- Ubuntu下SVN客户端RapidSVN
Window下我们使用TortoiseSVN,可以很方便地进行查看.比较.更新.提交.回滚等SVN版本控制操作.在Linux下,我们可以使用rapidsvn. RapidSVN是一款不错的SVN客户端 ...
- SCCM+WSUS的方式分发补丁
简单来说,System Center Configuration Manager(SCCM/ConfigMgr)由SMS(Systems Management Server)发展而来,其作为一款针对企 ...
- KVM虚拟机典型配置文件xml
<domain type='kvm'> <name>vm64-1</name> //虚拟机名称 <memory unit='MiB'>2300</ ...
- nginx dockerfile安装第三方模块
# nginx Dockerfile # Version 1.0 # author fendo # Base images 基础镜像 FROM centos:centos7 #FROM hub.c.. ...
- MVC+Ninject+三层架构+代码生成 -- 总结(二、建項目)
1.項目分層,其中SqlSugar 是一個ORM 庫類. 2.VS庫類 視圖.
- C#利用newtonsoft.json读取.so配置文件内容
今天花 了点时间来使用 C#读取json文件 ,文件后缀为 .so文件 ,也是基于文件流的形式 获取 对象 ,然后解析; 之所以尝试 使用 json读取 ,是因为其配置文件的格式 更为友好 和方便,直 ...
- C#自定义消息函数,需要一个TextBox,一个委托,直接上代码;
private delegate void de_OutputMessage(string str); public void OutputMessage(string str) { if (text ...