React-如何根据另一个中的选择填充两个下拉列表
我需要根据使用React的MajorHead下拉菜单中的选择更改下拉Method&Minorhead的内容。
如果我选择在mainhead中作弊,则应该在minorHead和Apple中显示a&b,在Method中显示橙色。
如果我在主脑中选择绑架,则应该在“方法”中以未成年人和猫,狗显示AB&BC。
import React, { Component } from 'react';class Profile extends Component {
render() {
return (
<form>
<div className="form-group">
<label for="inputState">Major head</label>
<select id="inputState" className="form-control"/>
<option selected>Choose...</option>
<option>Cheating</option>
<option>Abduction</option>
<option>House brake</option>
</div>
<div className="form-group">
<label for="inputState">Minor head</label>
<select id="inputState" className="form-control"/>
<option selected>Choose...</option>
<option>a</option>
<option>b</option>
<option>AB</option>
<option>BC</option>
<option>X</option>
<option>Y</option>
</div>
<div className="form-group">
<label for="inputState">method</label>
<select id="inputState" className="form-control"/>
<option selected>Choose...</option>
<option>apple</option>
<option>orange</option>
<option>cat</option>
<option>dog</option>
</div>
</form>
)
}
}
export default Profile;
回答:
对于您的主标题Select中的每个选项,我将为method和minor创建一个受支持的值数组。
class App extends React.Component { constructor(props) {
super(props)
this.state = {
selectedView: 'Cheating'
}
}
render() {
const { selectedView } = this.state
const VIEWS = [
{
name: 'Cheating',
minor: ['a', 'b'],
method: ['apple', 'orange']
}, {
name: 'Abductions',
minor: ['AB', 'BC', 'X'],
method: ['cat', 'dog']
}
]
const getMajorMethod = () => {
const view = VIEWS.filter(({name}) => name === selectedView)[0]
return (
<div>
<select>
{view.minor.map(m => <option>{m}</option>)}
</select>
<select>
{view.method.map(m => <option>{m}</option>)}
</select>
</div>
)
}
return (
<div>
<select onChange={(e) => this.setState({selectedView: e.target.value})}>
{VIEWS.map(({name}) => <option value={name}>{name}</option>)}
</select>
{getMajorMethod()}
</div>
)
}
}
ReactDOM.render(<App />, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
这样的结构将允许您(在最初的MAJOR选择范围内)map
遍历您的模型VIEWS
并将name
prop应用于选项。
然后,您可以拥有另一个地图,该地图显示其他两个选择(次要和方法),VIEWS
相对minor
和method
数组是它们的选项
以上是 React-如何根据另一个中的选择填充两个下拉列表 的全部内容, 来源链接: utcz.com/qa/403203.html