既然你已经需要公司对象了,我会把你需要的关于公司的一切都放在fetch上:
const companies = [
{
id: 1,
name: "Acme",
...otherProps
},
{
id: 2,
name: "Beta",
...otherProps
}
];
那么,
map
超过
company
FormItemControl
的
onChange
方法。然后父对象将选择存储到
state
:
表单.js
...
state = { company: [] };
handleSubmit = e => {
e.preventDefault();
const { company } = this.state;
...etc
}
handleCompanySelect = company => this.setState({ selectedCompany: [company] })
render = () => {
...
return (
<form onSubmit={this.handleSubmit}>
...
<RadioGroup
aria-label={title}
name={title}
value={this.state.value}
onChange={this.handleChange}
>
{companies.map(props => (
<RadioOption
company={...props}
key={props.id}
handleCompanySelect={this.handleCompanySelect}
/>
))}
</RadioGroup>
...
</form>
)
收音机选项.js
import React, { PureComponent } from 'react';
import { Radio, FormControlLabel } from '...';
export default class RadioOption extends PureComponent {
handleChange = () => this.props.handleCompanySelect(this.props.company);
render = () => {
const { name } = this.props.company;
return (
<FormControlLabel
control={<Radio />}
name={name}
value={name}
label={name}
onChange={this.handleChange}
/>
)
}
}