Следуя официальным ReactJS Docs для управления элементами формы, мне удалось собрать следующее, за исключением того, что я держу флажки в отдельной функции:
У меня есть функция с именем CheckBox()
, где я сохраняю флажки:
function CheckBox(props){
return(
<div>
<p>Check all that apply:</p>
<label>
<input type="checkbox" name="a" checked={props.a} onChange={props.handleChange}/>
</label>
<br/>
<label>
<input type="checkbox" name="b" checked={props.b} onChange={props.handleChange}/>
</label>
<br/>
<label>
<input type="checkbox" name="c" checked={props.c} onChange={props.handleChange}/>
</label>
<hr/>
</div>
)
}
А класс приложения для государства выглядит следующим образом:
class App extends React.Component{
constructor(props){
super(props);
this.state = {
fullname: '',
a: false,
b: false,
c: false
}
this.handleChange = this.handleChange.bind(this);
}
handleChange(e) {
const target = e.target;
const value = target.type === 'checkbox' ? target.checked : target.value;
const name = target.name;
this.setState({
[name]: value,
});
console.log(this.state.a);
console.log(this.state.fullname);
}
render(){
return(
<div>
<label>
<p>Name</p>
<input name="fullname" value={this.state.fullname} onChange={this.handleChange}/>
</label>
<CheckBox a={this.state.a} b={this.state.b} c={this.state.c} />
<hr/>
</div>
)
}
}
Я сохранил два журнала консоли в handleChange()
, чтобы проверить состояния. Состояние для имени работает нормально, но я не могу заставить состояние любого из флажков работать.
Что я делаю не так в вышеприведенном?