UNPKG

hcmobile-sdk

Version:

mobile-sdk

67 lines (59 loc) 1.8 kB
import React, {Component} from 'react'; import {View} from 'react-native'; import SelectButton from "./SelectButton"; import PropTypes from 'prop-types'; export default class RadioGroup extends Component { constructor(props) { super(props); this.state = { selectedKey: props.defaultChecked || '', }; let keys = {}; props.children.map((item) => { if (keys[item.props.keyValue] === 1) { let message = 'Duplicated keyValue:' + item.props.keyValue; throw new Error(message); } else { keys[item.props.keyValue] = 1; } }); if (props.defaultChecked !== undefined) { this.props.onChanged(props.defaultChecked); } } static propTypes = { defaultChecked: PropTypes.string, onChanged: PropTypes.func.isRequired, }; render() { return ( <View {...this.props}> {this.props.children.map((item) => { return ( <SelectButton {...item.props} key={item.props.keyValue} onClick={() => { this.onChanged(item.props.keyValue); }} setChecked={item.props.keyValue === this.state.selectedKey}/>); })} </View> ); } onChanged = (key) => { this.setState({ selectedKey: key, }); this.props.onChanged(key); }; /** * 清除选中状态 * */ clearState = () => { this.setState({ selectedKey: '', }); this.props.onChanged(''); } }