私は、ユーザーの性別をチェックするラジオボタンのグループを持っています。react.jsのラジオボタンを検証する方法は?
これはラジオボタンのマークアップです。
export default class Gender extends React.Component {
genderRow(gender) {
return (
<Radio onBlur={this.props.validate} key={gender.id} name="gender" value={gender.id} label={gender.text} onChange={this.props.onChange}/>
)
}
render() {
let genderError;
if(this.props.errors.gender) {
genderError = <span className="has-error">Gender is required</span>
} else {
genderError = null;
}
return (
<div>
{genderError}
{this.props.gender.map(g => this.genderRow(g))}
</div>
)
}
}
onBlur次の関数を呼び出しようとしています。
validate(event) {
let name = event.target.name;
let errors = this.state.errors;
if(!event.target.value) {
errors[name] = true;
this.setState({ errors: errors })
}
}
問題は次のとおりです。ラジオボタンは制御されたコンポーネントであるため、常に真理値があります。つまり、!event.target.value
をチェックすると、falseを返します。ユーザーが実際に値を選択しなくても起こっています。あなたのonChange
ハンドラで
あなたは何をしようとしているのかは正確にはわかりませんが、できませんか?event.target.checked? – jordaniac89
私はそれが動作しないという考えを持って、それを試してみるつもりです。私はそれを最初に試したいと思うtho。 –
OKそれは動作します。ありがとうございました。 –