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
Table of contents 01 Create invisible columns 02 ...
Table of contents 1. ChildNodes attribute travers...
I saw a good idea and recorded it. I have used jQ...
Table of contents 1. Demo Project 1.1 Interface P...
This article records the installation and configu...
Table of contents Import on demand: Global Import...
Note: When writing the docker-compose.yml file, a...
1. Window -> preferences to open the eclipse p...
The RHEL/CentOS series of Linux operating systems...
This article shares the specific code of js+canva...
This article describes the support and problem so...
will-change tells the browser what changes will h...
Table of contents Preface Main implementation cod...
I have found a lot of online resources on this pro...
Table of contents 1. Common function classificati...