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 实现 多选标签的更多相关文章

  1. [RN] React Native 下实现底部标签(支持滑动切换)

    上一篇文章 [RN] React Native 下实现底部标签(不支持滑动切换) 总结了不支持滑动切换的方法,此篇文章总结出 支持滑动 的方法 准备工作之类的,跟上文类似,大家可点击上文查看相关内容. ...

  2. [RN] React Native 下实现底部标签(不支持滑动切换)

    底部标签是现在App的基本菜单实现 下面分别用 createBottomTabNavigator 和 createMaterialBottomTabNavigator 两种方法分别实现底部菜单 但此两 ...

  3. [RN] React Native 实现图片预览

    [RN] React Native 实现图片预览 效果预览: 代码如下: 'use strict'; import React, {Component} from 'react'; import {I ...

  4. [RN] React Native 常见基本问题归纳总结

    [RN] React Native  常见基本问题归纳总结 本问题总结涉及到版本为: "react": "16.8.3","react-native& ...

  5. [RN] React Native 关闭所有黄色警告

    [RN] React Native 关闭所有黄色警告 console.ignoredYellowBox = ['Warning: BackAndroid is deprecated. Please u ...

  6. [RN] React Native 幻灯片效果 Banner

    [RN] React Native 幻灯片效果 Banner 1.定义Banner import React, {Component} from 'react'; import {Image, Scr ...

  7. [RN] React Native 常用命令行

    [RN] React Native 常用命令行 1.查看当前版本 react-native --version 或 react-native -v 2.创建指定版本的React Native项目 1) ...

  8. [RN] React Native 实现 类似QQ 登陆页面

    [RN] React Native 实现 类似QQ 登陆页面 一.主页index.js 项目目录下index.js /** * @format */ import {AppRegistry} from ...

  9. React Native 系列(九) -- Tab标签组件

    前言 本系列是基于React Native版本号0.44.3写的.很多的App都使用了Tab标签组件,例如QQ,微信等等,就是切换不同的选项,显示不同的内容.那么这篇文章将介绍RN中的Tab标签组件. ...

随机推荐

  1. 【More Effective C++ 条款5】对定制的“类型转换函数”保持警觉

    1)C++允许内置数据类型之间进行隐式转换,比如char转int,int转double,对于内置数据类型的转换有详细的规则,但不管怎么样,这些都是语言提供的,相对安全,而且我们无法更改 对于自定义类的 ...

  2. 如何解决macbook pro摄像头不工作的问题

    背景:上周用qq视频聊天都正常,这周突然显示检测不到摄像头.打开facetime和photo booth也显示“相机未连接”排查一切问题后只好给苹果客服打电话,在客服的帮助下解决了这个问题. 解决办法 ...

  3. maven的基础入门

    Maven是Java世界中一个很好使的项目管理工具,关于[好使]这个特性从项目的使用量上就能体现出来,虽然说现在有更好使的Gradle,但是Maven的地位也不会那么轻易被撼动,支持者还是多多. Ma ...

  4. Ubuntu下SVN客户端RapidSVN

    Window下我们使用TortoiseSVN,可以很方便地进行查看.比较.更新.提交.回滚等SVN版本控制操作.在Linux下,我们可以使用rapidsvn. RapidSVN是一款不错的SVN客户端 ...

  5. SCCM+WSUS的方式分发补丁

    简单来说,System Center Configuration Manager(SCCM/ConfigMgr)由SMS(Systems Management Server)发展而来,其作为一款针对企 ...

  6. KVM虚拟机典型配置文件xml

    <domain type='kvm'> <name>vm64-1</name> //虚拟机名称 <memory unit='MiB'>2300</ ...

  7. nginx dockerfile安装第三方模块

    # nginx Dockerfile # Version 1.0 # author fendo # Base images 基础镜像 FROM centos:centos7 #FROM hub.c.. ...

  8. MVC+Ninject+三层架构+代码生成 -- 总结(二、建項目)

    1.項目分層,其中SqlSugar 是一個ORM 庫類. 2.VS庫類 視圖.

  9. C#利用newtonsoft.json读取.so配置文件内容

    今天花 了点时间来使用 C#读取json文件 ,文件后缀为 .so文件 ,也是基于文件流的形式 获取 对象 ,然后解析; 之所以尝试 使用 json读取 ,是因为其配置文件的格式 更为友好 和方便,直 ...

  10. C#自定义消息函数,需要一个TextBox,一个委托,直接上代码;

    private delegate void de_OutputMessage(string str); public void OutputMessage(string str) { if (text ...