[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标签组件. ...
随机推荐
- ROS向节点传递参数
ROS的节点有很多中调用方式,包括rosrun,launch,直接运行等,向节点内传递参数的方式也有很多. 1. rosrun + 参数服务器传递 ros::init(argc, argv, &quo ...
- 管理ceph缓存池
目录 缓存池简介 缓存池原理 缓存池的工作模式 配置缓存池 1. 创建一个缓存池 2. 设置缓存层 3. 缓存层相关参数说明 4. 测试缓存池 删除缓存池 1. 删除read-only缓存池 2. 删 ...
- 【Navicat】使用navicat执行sql 查询速度很慢解决方法
========================== Navicat 远程连接Mysql执行普通sql速度慢问题: 场景: navicat可以连接上 远程服务器的mysql.但是在navicat执行最 ...
- php使用imagettftext()函数有干扰线但是没有文字的问题解决
public function code() { //主要参数 if($font_size == 0) $font_size = 20; if($img_width == 0) $img_width ...
- Java反射获取泛型类型
本文链接:https://blog.csdn.net/hongxingxiaonan/article/details/49202613 在Java反射技术的应用中,取得一个类的成员.方法和构造函数相对 ...
- 经典SQL语句使用方法大全(自留用)
一.基础 1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份 ...
- 安装ceres-solver win10遇到Eigen安装的问题
1.无法打开包括文件: “Eigen/Core”: 去github上下载最新的源码 2. "The Eigen/Array header does no longer exist in E ...
- Spring Cache Redis结合遇到的坑
业务上需要把一些数据放到redis里面,但是系统逻辑代码差不多编写完成了,怎么整?用Spring Cache啊,对既有业务逻辑侵袭极小. 于是尝试调查了一下,遇到一些问题分享一下(本文使用Spring ...
- GNU autotools 安装和使用
1. 下载 http://www.gnu.org/software/software.html 2. 安装 m4-1.4.11.tar.gz autoconf-2.63.tar.gz automake ...
- JDK安装—JAVA
下载JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 关于版本选择需要注意的问题: 如果eclip ...