React组件之多选Checkbox实例

 更新时间:2023年10月23日 14:22:34   作者:追影的React开发者  
这篇文章主要介绍了React组件之多选Checkbox实例,具有很好的参考价值,希望对大家有所帮助,

React组件之多选Checkbox

import React, { PureComponent } from "react";
import { List, NavBar, Checkbox } from "antd-mobile";
import { Icon } from "antd";
import TouchFeedback from "rmc-feedback";
import NavContentContainer from "./NavContentContainer";
import PanelContentContainer from "./PanelContentContainer";
 
export default class Checkbox_ extends PureComponent {
  constructor(props) {
    super(props);
    this.state = { select: [] };
  }
 
  componentWillReceiveProps(props) {
    const { show, init } = props;
    if (show) {
      this.setState({ select: init || [] });
    }
  }
 
  getDefaultChecked = value => {
    const { init } = this.props;
    const result = (init || []).filter(i => i === value);
    return result.length !== 0;
  };
 
  render() {
    const { show, data, title, hide, save } = this.props;
 
    const { select } = this.state;
 
    return (
      <div
        style={{
          display: show ? "block" : "none",
          zIndex: 1,
          position: "absolute",
          backgroundColor: "#fff",
          overflowY: "auto",
          top: 0,
          bottom: 0,
          left: 0,
          right: 0
        }}
      >
        <NavBar
          className="global-navbar"
          mode="dark"
          icon={
            <TouchFeedback activeClassName="primary-feedback-active">
              <Icon type="left" />
            </TouchFeedback>
          }
          onLeftClick={() => hide()}
          rightContent={[
            <Icon
              type="check"
              style={{ marginRight: "16px" }}
              onClick={() => save(select)}
            />
          ]}
        >
          {title}
        </NavBar>
        <NavContentContainer>
          <PanelContentContainer>
            <List>
              {data.map(i => (
                <Checkbox.CheckboxItem
                  wrap
                  key={i.value}
                  defaultChecked={this.getDefaultChecked(i.value)}
                  onChange={() => {
                    if (select.indexOf(i.value) === -1) {
                      select.push(i.value);
                    } else {
                      const odd = select;
                      odd.splice(odd.indexOf(i.value), 1);
                      this.setState({
                        select: odd
                      });
                    }
                  }}
                >
                  {i.key}
                </Checkbox.CheckboxItem>
              ))}
            </List>
          </PanelContentContainer>
        </NavContentContainer>
      </div>
    );
  }
}
<Checkbox
          show={showCheckbox}
          data={checkboxData}
          title={checkboxTitle}
          id={checkboxId}
          init={checkboxNum[checkboxId]}
          hide={() => this.setState({ showCheckbox: false })}
          save={v => {
            this.setState({
              showCheckbox: false,
              checkboxNum: { ...checkboxNum, [checkboxId]: v }
            });
          }}
/>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • react实现Radio组件的示例代码

    react实现Radio组件的示例代码

    这篇文章主要介绍了react实现Radio组件的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • React中Refs的使用场景及核心要点详解

    React中Refs的使用场景及核心要点详解

    在使用 React 进行开发过程中,或多或少使用过 Refs 进行 DOM 操作,这篇文章主要介绍了 Refs 功能和使用场景以及注意事项,希望对大家有所帮助
    2023-07-07
  • 详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)

    详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)

    本篇文章主要介绍了React-Native解决键盘遮挡问题(Keyboard遮挡问题),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • React初始化渲染过程示例详解

    React初始化渲染过程示例详解

    这篇文章主要为大家介绍了React初始化渲染过程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 从零搭建react+ts组件库(封装antd)的详细过程

    从零搭建react+ts组件库(封装antd)的详细过程

    这篇文章主要介绍了从零搭建react+ts组件库(封装antd),实际上,代码开发过程中,还有很多可以辅助开发的模块、流程,本文所搭建的整个项目,我都按照文章一步一步进行了git提交,开发小伙伴可以边阅读文章边对照git提交一步一步来看
    2022-05-05
  • react-router-dom之异步加载路由方式

    react-router-dom之异步加载路由方式

    这篇文章主要介绍了react-router-dom之异步加载路由方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 使用hooks写React组件需要注意的5个地方

    使用hooks写React组件需要注意的5个地方

    这篇文章主要介绍了使用hooks写React组件需要注意的5个地方,帮助大家更好的理解和学习使用React组件,感兴趣的朋友可以了解下
    2021-04-04
  • React Fiber中面试官最关心的技术话题

    React Fiber中面试官最关心的技术话题

    这篇文章主要为大家介绍了React Fiber中面试官最关心的技术话题解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • React和Vue组件更新的实现及区别

    React和Vue组件更新的实现及区别

    React 和 Vue 都是当今最流行的前端框架,它们都实现了组件化开发模式,本文将从React和Vue的组件更新原理入手,剖析两者虚拟DOM difer算法的异同点,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • React + webpack 环境配置的方法步骤

    React + webpack 环境配置的方法步骤

    本篇文章主要介绍了React + webpack 环境配置的方法步骤,详解的介绍了开发环境的配置搭建,有兴趣的可以了解一下
    2017-09-09

最新评论