React implements the sample code of Radio component

React implements the sample code of Radio component

This article aims to use the clearest structure to implement the basic functions of some components. I hope to learn and make progress together with you.

Effect display:

Test components:

class Test extends Component {
  constructor(props) {
    super(props)
    this.state = {
      active:1
    }
  }
  onGroupChange(value) {
    this.setState({
      active: value
    })
  }
  render() {
    return (
     <div>
      <RadioGroup onChange={this.onGroupChange.bind(this)} active={this.state.active}>
         <Radio value={1}>Pay with balance</Radio>
         <Radio value={2}>Use WeChat Pay</Radio>
      </RadioGroup>
      <Button onClick={()=>{
             console.log("The current selection is: "+this.state.active)
           }}>Next</Button>
     </div>
      )
  }
}
export default Test;

RadioGroup:

import React, { Component } from 'react';
class RadioGroup extends Component {
  handleActiveChange(value) {
    console.log(`${value} is selected`)
    this.props.onChange(value)
  }
  render() {
    return (
      <div>
        {
          React.Children.map(this.props.children, child => {
            let isActive = this.props.active === child.props.value ? true : false
            return React.cloneElement(child, {
              label: child.props.children,
              value: child.props.value,
              active: isActive,
              onClick: this.handleActiveChange.bind(this)
            })
          })
        }
      </div>
    )
  }
}
export default RadioGroup;

Radio.jsx:

import React, { Component } from 'react';
import "./radio.scss"
class Radio extends Component {
  render() {
    return (
      <div className="radio-wrap" onClick={this.props.onClick.bind(this,this.props.value)}>
        <div className="left">
          <div className={`circle ${this.props.active === true ? 'active' : ''} `}>
            <div className="fork"></div>
          </div>
          <div className="label">{this.props.label}</div>
        </div>
      </div>
    )
  }
}
export default Radio;

Radio.scss:

.radio-wrap {
  height: 40px;
  background-color: #ffffff;
  display: flex;
  align-items: center;
  padding: 0px 30px;

  &:active {
    background-color: rgb(221, 221, 221);
  }

  .left {
    display: inline-block;

    .circle {
      display: inline-block;
      height: 22px;
      width: 22px;
      box-sizing: border-box;
      border: 1px solid #c5c9cd;
      border-radius: 50%;
      background-color: #ffffff;
      position: relative;

      
    }
    .active{
      background-color: #1eb94a;
      .fork {
        height: 12px;
        width: 5px;
        border-right: 1.5px solid #ffffff;
        border-bottom: 1.5px solid #ffffff;
        position: absolute;
        top: 40%;
        left: 50%;
        transform: translate(-50%, -50%) rotate(45deg);
      }
    }

    .label {
      vertical-align: top;
      margin-left: 10px;
      display: inline-block;
      height: 22px;
      line-height: 22px;
      font-size: 14px;
    }
  }
}

This is the end of this article about the sample code of implementing Radio component in react. For more relevant content about implementing Radio component in react, please search previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • React error boundary component processing
  • Detailed explanation of react setState
  • Tips for writing concise React components
  • Example of using setInterval function in React
  • Andrew Ng's machine learning exercise: SVM support vector machine

<<:  Detailed explanation of the use and differences of various lock mechanisms in Linux

>>:  How to solve the Mysql transaction operation failure

Recommend

Basic operations on invisible columns in MySQL 8.0

Table of contents 01 Create invisible columns 02 ...

Tips for implementing list loop scrolling based on jQuery (super simple)

I saw a good idea and recorded it. I have used jQ...

Detailed process of SpringBoot integrating Docker

Table of contents 1. Demo Project 1.1 Interface P...

How to implement on-demand import and global import in element-plus

Table of contents Import on demand: Global Import...

Detailed explanation of common template commands in docker-compose.yml files

Note: When writing the docker-compose.yml file, a...

How to add Tomcat Server configuration to Eclipse

1. Window -> preferences to open the eclipse p...

Tutorial on installing mysql5.7.17 via yum on redhat7

The RHEL/CentOS series of Linux operating systems...

js+canvas realizes code rain effect

This article shares the specific code of js+canva...

Detailed explanation of MySQL/Java server support for emoji and problem solving

This article describes the support and problem so...

CSS performance optimization - detailed explanation of will-change usage

will-change tells the browser what changes will h...

Detailed explanation of simple snow effect example using JS

Table of contents Preface Main implementation cod...

Common functions of MySQL basics

Table of contents 1. Common function classificati...