【发布时间】:2018-08-05 11:39:56
【问题描述】:
我制作了 4 个单选按钮和一个选项输入框:其他单选按钮(见截图)。当我选中其他单选按钮并在输入框中输入值时,this.state.gender 变为 -1 和 this.state.gendertext 等于输入框中输入的文本。所以我想做this.state.gender = this.state.gendertext当且仅当其他单选按钮被选中,否则this.state.gender等于单选按钮选项值和this.state.gendertext = ''
注意:-1 用作最后一个单选按钮选项的标识符。
contactform.js:
import React, { Component } from 'react';
class ContactForm extends Component {
constructor(props){
super(props);
this.state = {
gender:'',
gendertext:''
};
}
setGender(checkedValue){
console.log(checkedValue);
this.setState({
gender:checkedValue
})
}
onChangeTextBoxGender(event){
this.setState({gendertext: event.target.value})
}
savedata(age, gender, health, name, email, info, fitness){
let newcontent = contentref.push();
if(this.state.gender === -1){
this.setState({
gender:this.state.gendertext
})
}
newcontent.set({
gender:this.state.gender,
gendertext:this.state.gendertext
});
}
render() {
return (
<div>
<div id="center">
<form>
<div id="gender">
<div className="form-group">
<div className="col-sm-offset-2 col-sm-10">
<h4>What is your gender?</h4>
</div>
</div>
<div className="form-group">
<div className="col-sm-offset-2 col-sm-10">
<div className="radio">
<label><input type="radio" name="gender" checked={(this.state.gender === 'Female')} onChange={this.setGender.bind(this,'Female')}/> Female</label>
</div>
</div>
</div>
<div className="form-group">
<div className="col-sm-offset-2 col-sm-10">
<div className="radio">
<label><input type="radio" name="gender" checked={(this.state.gender === 'Male')} onChange={this.setGender.bind(this,'Male')}/> Male</label>
</div>
</div>
</div>
<div className="form-group">
<div className="col-sm-offset-2 col-sm-10">
<div className="radio">
<label><input type="radio" name="gender" checked={(this.state.gender === 'Prefer not to say')} onChange={this.setGender.bind(this,'Prefer not to say')}/> Prefer not to say</label>
</div>
</div>
</div>
<div className="form-group">
<div className="col-sm-offset-2 col-sm-10">
<div className="radio">
<label><input type="radio" name="gender" checked={(this.state.gender === -1)} onChange={this.setGender.bind(this,-1)}/>Other</label>
<input type="text" class="form-inline" id="other1" value={this.state.gendertext} onChange={this.onChangeTextBoxGender.bind(this)}/>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
);
}
}
export default ContactForm;
截图: here
【问题讨论】:
-
您面临的问题是什么?
-
@ViswasMenon 当我检查选项单选按钮
this.state.gender时,我已经制作了 2 个状态变量gender 和gendertext 变为-1,并且当我们检查了其他单选按钮时,我们在输入按钮中输入了文本,所以现在@987654331 @ 等于输入框文本。现在如果this.state.gender === -1我希望它等于this.state.gendertext -
你是不是在上面的 savedata() 里面做那个检查,还是它不起作用?
-
我也不清楚你的问题是什么。对我来说似乎很x-y ish。如果你想改变状态调用 setState。但我真的认为你应该描述功能应该是什么,而不是你认为你的解决方案应该是什么
-
还有什么是
contentref?在我看来是不确定的
标签: javascript reactjs