我的反应组件中有一些代码:
<legend>Data:</legend>
<Input type="text" name="Payment" id="Payment" className="validate[required, custom[integer], max[9999999999999]]" placeholder="2000" addonBefore="Payment" addonAfter="cents" />
<Input type="text" name="Value" id="Value" className="validate[required, custom[integer], max[9999999999999]]" placeholder="3500" addonBefore="Value" addonAfter="cents" />
<Input type="select" label="Some code" placeholder="placeholder" >
<option value="0">option1</option>
<option value="1">option2</option>
<option value="2">option3</option>
</Input>
<Input type="select" label="Some category" placeholder="Category">
<option value="0">category1</option>
<option value="1">category2</option>
<option value="2">category3</option>
<option value="3">Category4</option>
<option value="4">Category5</option>
</Input>
<Input type="select" label="Another code" placeholder="some code">
<option value="1">code1</option>
<option value="2">code2</option>
<option value="3">code3</option>
<option value="4">code4</option>
<option value="5">code5</option>
<option value="8">code6</option>
<option value="7">code7</option>
</Input>
</fieldset>
如果输入付款不为空,我如何在“某些类别”中更改选择选项?我的意思是,如果用户在“付款”输入中输入一些文本(例如),则必须将选项从默认更改为第二或第三。还有其他文字输入和选择选项?我怎样才能做到这一点?
答案 0 :(得分:2)
您必须完成所有输入 - controlled
将输入值保存到组件的state
,并根据这些值执行呈现不同options
<select value={this.state.myValue} onChange={this.handleChange}>
<option value="A">Apple</option>
<option value="B">Banana</option>
<option value="C">Cranberry</option>
</select>
您需要使用value
属性而非defaultValue
来进行选择 - 受控
阅读docs
答案 1 :(得分:0)
好吧,我来到这个代码(它为我工作并解决了我的问题):
state : {
text: '',
select: 0
},
handleChange({target: {id, value}}) {
const data = {[id]: value};
if (id == 'Payment' && value.length != 0) {
data.select = 4;
} else if (id == 'Value' && value.length != 0){
data.select = 2;
} else {
data.select = 0;
}
this.setState(data);
},
/* some code in render fucntion for our form*/
也许这对某人有帮助。