lon*_*ger 5 javascript reactjs
这就是我渲染的
<select>
<option>1</option>
<option>2</option>
</select>
Run Code Online (Sandbox Code Playgroud)
从下拉菜单中选择任何选项。我必须在其旁边呈现另一个下拉列表 。
<select>
<option>1</option>
<option>2</option>
</select>
<select>
<option>1.1</option>
<option>1.2</option>
</select>
Run Code Online (Sandbox Code Playgroud)
然后从第二个下拉列表中选择选项。我必须在其旁边呈现文本类型的输入字段。
我该如何在反应中实现呢?
var React = require('react');
var ReactDOM = require('react-dom');
var View = React.createClass({
getInitialState: function() {
return {
value: '------'
}
},
handleChange: function(event){
this.setState({value: event.target.value});
this.getFields(event.target.value);
},
handleClick : function(){
},
render : function(){
return (<div>
<p>
<i className="plusSymbol fa fa-minus-circle"></i>
<select onChange={this.handleChange} value={this.state.value} className="js-example-basic-single">
<option value="">------</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</p>
<p>
<i onClick={this.handleClick} className="plusSymbol fa fa-plus-circle"></i>
<span>Add a new condition</span>
</p>
</div>);
}});
module.exports = View;
Run Code Online (Sandbox Code Playgroud)
因此,我的视图应如下所示:[Dropdown] [Dropdown] [Text Field]
以下示例应为您指明正确的方向...
var Hello = React.createClass({
getDefaultProps: function () {
return {
fieldMap: {
"1": [
{ value: "1.1", label: "1.1" },
{ value: "1.2", label: "1.2" }
],
"2": [
{ value: "2.1", label: "2.1" },
{ value: "2.2", label: "2.2" }
]
}
}
},
getInitialState: function() {
return {
firstValue: '',
secondValue: '',
thirdValue: ''
}
},
getOptions: function (key) {
if (!this.props.fieldMap[key]) {
return null;
}
return this.props.fieldMap[key].map(function (el, i) {
return <option key={i} value={el.value}>{el.label}</option>
});
},
handleFirstLevelChange: function (event) {
this.setState({
firstValue: event.target.value,
secondValue: '',
thirdValue: ''
});
},
handleSecondLevelChange: function (event) {
this.setState({
secondValue: event.target.value,
thirdValue: ''
});
},
handleThirdLevelChange: function (event) {
this.setState({
thirdValue: event.target.value
});
},
getSecondLevelField: function () {
if (!this.state.firstValue) {
return null;
}
return (
<select onChange={this.handleSecondLevelChange} value={this.state.secondValue}>
<option value="">---</option>
{this.getOptions(this.state.firstValue)}
</select>
)
},
getThirdLevelField: function () {
if (!this.state.secondValue) {
return null;
}
return (
<input type="text" onChange={this.handleThirdLevelChange} value={this.state.thirdValue} />
)
},
render: function() {
return (
<div>
<select onChange={this.handleFirstLevelChange} value={this.state.firstValue}>
<option value="">---</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
{this.getSecondLevelField()}
{this.getThirdLevelField()}
</div>
);
}
});
Run Code Online (Sandbox Code Playgroud)
在https://jsfiddle.net/27u9Lw4t/1/上现场观看
| 归档时间: |
|
| 查看次数: |
3301 次 |
| 最近记录: |