У меня есть постоянный файл с этими данными:
export let testing= [
{ id: 'test1', label: 'Test1' },
{ id: 'test2', label: 'Test2' },
{ id: 'test3', label: 'Test3' }
]
В моем checkboxes.js,
class CheckBoxes extends Component {
constructor(props) {
super(props);
this.state = ({
checkBoxArray: [],
isChecked: false
})
}
handleSubmit = (event) => {
event.preventDefault(); //use for testing only
fetch(`${process.env.REACT_APP_SERVER_URL}/testing`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
check_box_data: event.target.check_box_name[].value, //error
})
})
.then(response => {
console.log(response);
if (response.status === 200) {
console.log('Success')
} else {
alert('Failed')
}
})
.catch(error => {
alert('Server error')
});
}
handleCheckBoxChange = (index) => { //not working
const {checkBoxArray} = this.state;
checkBoxArray[index].checked = !checkBoxArray[index].checked;
this.setState({ //this line causes maximum depth mount error
checkBoxArray
});
}
render() {
return (
<div>
<form onSubmit={this.handleSubmit}>
<div>
{
this.state.checkBoxArray.map((object, index) => {
return (
<CheckBoxComponent
key={index}
check_box_id={object.id}
check_box_name='check_box_name[]'
check_box_label={object.label}
check_box_value={object.id}
isChecked={this.state.isChecked}
handleCheckBoxChange={this.handleCheckBoxChange(index)}
/>
);
})
}
<SingleButtonComponent button_type='submit' button_value='Create Now' />
</div>
</form>
</div>
)
}
}
export default CheckBoxes;
В моем чекбоксе компонент js:
import React from 'react';
const CheckBoxComponent = (props) => {
const { check_box_id, check_box_name, check_box_label, check_box_value, isChecked, handleCheckBoxChange } = props;
return (
<div>
<input type='checkbox' id={check_box_id} name={check_box_name} value={check_box_value} checked={isChecked} onChange={handleCheckBoxChange}/>
<label htmlFor={check_box_id} className='lh-copy'> {check_box_label}</label>
</div>
)
}
export default CheckBoxComponent;
Моя первая проблема - я не могу опубликовать значение флажка в виде массива в API выборки. Видимо [] не разрешено в event.target.check_box_name[].value
. Я попытался сделать event.target.check_box_name.value
, но он не может прочитать свойство 'значение' из неопределенного. Я хочу отправить массив значений флажков обратно на сервер.
Моя вторая проблема - я не знаю, как установить динамически генерируемый флажок. Этот фрагмент кода проверит все флажки. Я показываю только 3 строки данных в постоянном файле, и это больше, поэтому я не приму никакого решения, которое работает статически.
Пожалуйста, дайте мне знать, если вы хотите, чтобы я добавил больше деталей или что-то еще Спасибо заранее.