hcmobile-sdk
Version:
mobile-sdk
67 lines (59 loc) • 1.8 kB
JavaScript
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('');
}
}