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:
|
<<: Detailed explanation of the use and differences of various lock mechanisms in Linux
>>: How to solve the Mysql transaction operation failure
mysql copy one table column to another table Some...
Counting the number of a string in a file is actu...
Preface tcpdump is a well-known command-line pack...
Table of contents MySQL delete syntax alias probl...
The latest Insider version of Visual Studio Code ...
1. The emergence of the problem Wrote a flat list...
Flash file formats: .FLV and .SWF There are two ex...
Preface The string types of MySQL database are CH...
I am currently developing a new app project. This...
Preface Introduction Lombok is a handy tool, just...
Table of contents initialization initState() init...
1. Location regular expression Let's take a l...
Table of contents 1. Realistic Background 2. Agre...
Table of contents introduce Support Intel CPU Sup...
1. Download Download address: https://dev.mysql.c...