zoukankan      html  css  js  c++  java
  • react实现多项选择题

    clickItems(item){//处理工种选择的函数
    const { data, dataList } = this.state;
    if (data.includes(item.id)) { // 移除
    this.setState({
    data: data.filter((items) => {
    return items !== item.id
    }),
    dataList: dataList.filter((items) => {
    return items.id !== item.id
    })
    },()=>{
    console.log(this.state.data)
    console.log(this.state.dataList)
    });
    } else {// 添加
    if (data && data.length >= 3) return;
    data.push(item.id);
    dataList.push(item);
    this.setState({
    data:data,
    dataList:dataList,
    },()=>{
    console.log(this.state.data)
    console.log(this.state.dataList)
    })
    }

    }

    clickItemss(item){//处理选中的项
    this.setState({
    data:this.state.data.filter((items)=>{
    return items!=item.id
    }),
    dataList:this.state.dataList.filter((itemss)=>{
    return itemss.id!=item.id
    })
    },()=>{
    console.log(this.state.data)
    console.log(this.state.dataList)
    })
    console.log(item)
    }

    以下事全部代码 供参考
    import Taro, { Component } from '@tarojs/taro'
    import { View, Button, Text, Swiper, SwiperItem ,MovableArea, MovableView ,Icon,
    Progress,

    } from '@tarojs/components'

    import { AtIcon, AtModal, AtModalHeader, AtModalContent, AtModalAction, AtButton ,AtForm ,AtInput,AtIndexes } from "taro-ui"
    import { connect } from '@tarojs/redux'

    import { add, minus, asyncAdd } from '../../actions/counter'

    import './testForm.less'




    /*@connect(({ counter }) => ({
    counter
    }), (dispatch) => ({
    add () {
    dispatch(add())
    },
    dec () {
    dispatch(minus())
    },
    asyncAdd () {
    dispatch(asyncAdd())
    }
    }))*/
    class Forms extends Component {

    constructor(props){
    super(props)
    this.state = {
    value: '',
    dataList:[],
    data:[],
    data1:[],
    dataList1:[]
    }
    }

    config = {
    navigationBarTitleText: 'form页'
    }

    componentWillReceiveProps (nextProps) {
    console.log(this.props, nextProps)
    }

    componentWillUnmount () { }

    componentDidShow () { }

    componentDidHide () { }
    handleChange (value) {
    this.setState({
    value
    })
    }
    onSubmit (event) {
    console.log(event)
    console.log(this.state.value)

    }
    onReset (event) {
    console.log(event)
    }

    onClick (item) {
    console.log(item)
    }
    clickItems(item){//处理工种选择的函数
    /*
    if(!this.state.data.includes(item.id)){
    console.log("没有包含当前的对象")
    this.state.data.push(item.id)
    this.state.dataList.push(item)
    if(this.state.dataList.length<=3 ){
    this.setState({
    data:this.state.data,
    dataList:this.state.dataList
    })
    }else{
    this.state.data.pop(item.id)
    this.state.dataList.pop(item)
    console.log("只能选择3项")
    console.log(this.state.data)

    }
    console.log(this.state.data)
    console.log(this.state.dataList)
    }else{
    console.log("包含当前的对象")
    if(this.state.dataList.length<=3 ){
    this.setState({
    data:this.state.data.filter((items)=>{
    return items!=item.id
    }),
    dataList:this.state.dataList.filter((items)=>{
    return items.id!=item.id
    })
    },()=>{
    console.log(this.state.data)
    console.log(this.state.dataList)
    })

    }else{
    this.state.data.pop(item.id)
    this.state.dataList.pop(item)
    console.log("只能选择3项")
    console.log(this.state.data)
    }
    }*/
    /*const { this.state.data, this.state.dataList } = this.state;*/
    const { data, dataList } = this.state;
    if (data.includes(item.id)) { // 移除
    this.setState({
    data: data.filter((items) => {
    return items !== item.id
    }),
    dataList: dataList.filter((items) => {
    return items.id !== item.id
    })
    },()=>{
    console.log(this.state.data)
    console.log(this.state.dataList)
    });
    } else {// 添加
    if (data && data.length >= 3) return;
    data.push(item.id);
    dataList.push(item);
    this.setState({
    data:data,
    dataList:dataList,
    },()=>{
    console.log(this.state.data)
    console.log(this.state.dataList)
    })
    }

    }
    clickItemss(item){
    this.setState({
    data:this.state.data.filter((items)=>{
    return items!=item.id
    }),
    dataList:this.state.dataList.filter((itemss)=>{

    return itemss.id!=item.id


    })
    },()=>{
    console.log(this.state.data)
    console.log(this.state.dataList)
    })
    console.log(item)
    }
    render () {
    const {data, dataList} = this.state;
    console.log(data+"====")
    console.log(dataList+"=====")
    const list = [
    {name:"普工",id:"1"},
    {name:"厨师",id:"2"},
    {name:"木工",id:"3"},
    {name:"工程师",id:"4"},
    {name:"钢筋工",id:"5"},
    {name:"水泥工",id:"6"},
    {name:"电工",id:"7"},
    {name:"海员",id:"8"},
    {name:"飞行员",id:"9"},
    ]

    return (

    <View>
    <View className='viewWrap'>
    {
    list.map((item,index)=>{
    return <View className={'view'+(this.state.data.includes(item.id) ?" active":'')} onClick={this.clickItems.bind(this,item)} key={index} >{item.name}</View>
    })

    }

    </View>

    <View>

    {
    dataList && dataList.length>0 && dataList.map((item,index)=>{
    return <View className='view1' onClick={this.clickItemss.bind(this,item )} key={index} >{item.name}</View>
    })

    }



    </View>

    </View>





    )
    }
    }

    export default Forms
  • 相关阅读:
    ASP.NET Core 2.2 : 二十七. JWT与用户授权(细化到Action)
    ASP.NET Core 2.2 : 二十六. 应用JWT进行用户认证及Token的刷新
    ASP.NET Core 发布到Linux需要注意的地方
    小程序根据数字做for循环
    Visual Studio 2019 正式版 更新内容
    CodeSmith 二、多模板按目录树批量自动生成代码
    CodeSmith 一、连接Mysql
    ASP.NET Core 2.2 十九. Action参数的映射与模型绑定
    ASP.NET Core 2.2 十八.各种Filter的内部处理机制及执行顺序
    ASP.NET Core 2.2 : 十七.Action的执行(Endpoint.RequestDelegate后面的故事)
  • 原文地址:https://www.cnblogs.com/liuerpeng/p/10154758.html
Copyright © 2011-2022 走看看