1
我是React的“new-ish”。我正在尝试创建一个自定义组件,它将在选择菜单中显示项目列表。用户将能够从菜单中选择一个选项。一旦完成,点击下面的“添加”按钮,将显示另一个选择菜单,由第一个选择菜单的其余未选定选项填充。随后每次点击添加按钮后,理想情况下都会继续发生,直到只剩下一个选项。动态反应选择菜单组件
我已经创建了下面的代码来显示初始选择菜单,但是我无法用我的头绕着它走。
import React from 'react';
import { Grid, Row, Col, Button, FormGroup, ControlLabel, FormControl } from 'react-bootstrap';
class App extends React.Component {
constructor(props) {
super(props);
this.props = props;
this.state = {
fruits: [
{ selected: false, fruit: 'Banana', value: 'banana' },
{ selected: false, fruit: 'Apple', value: 'apple' },
{ selected: false, fruit: 'Orange', value: 'orange' }
]
};
this._handleClick = this._handleClick.bind(this);
}
_handleClick(event) {
}
_handleChange(option) {
// this.setState({ value: option, selected: true });
}
render() {
return (
<div>
<Grid>
<Row>
<SelectMenu data={this.state.fruits} onChange={this._handleChange.bind(this)} />
</Row>
<Row>
<Col xs={12}>
<p>
<Button href="#" onClick={this._handleClick}>Add</Button>
</p>
</Col>
</Row>
</Grid>
</div>
);
}
}
class SelectMenu extends React.Component<any, any> {
constructor(props) {
super(props);
this.state = {
value: undefined
};
}
_handleChange(event) {
this.props.onChange(event.target.value);
}
render() {
const unselected = this.props.data.filter(fruit => fruit.selected == false);
return (
<Col sm={3}>
<FormGroup controlId="formControlsSelect">
<ControlLabel>Select</ControlLabel>
<FormControl componentClass="select" placeholder="select" onChange={this._handleChange.bind(this)} value={this.state.value}>
{this.props.data.map((option, index) => {
return <option key={index} value={option.value}>{option.location}</option>;
})};
</FormControl>
</FormGroup>
</Col>
);
}
}
export default App;
这是行不通的。我希望有人能够开创我创造这条道路的正确道路。
当你说“不工作”时,你可以详细说明你的意思吗?你将'_handleChange'传递给'onChange',它被调用,但'setState'在'_handleChange'函数中被注释掉了。你可以偶然创建一个jsFiddle吗? – aug
当我说它不起作用时,我的意思是它不以我想要的方式工作。它确实呈现select元素,但是_handleChange函数,即使setState方法未注释,也不会帮助我查找的功能。 – addam