В моем приложении «Реакция» у меня есть список автомобилей, возвращенных после вызова Axios, у каждого автомобиля есть атрибут, называемый «Возвратный», и имеет логическое значение «Истина» или «Ложь», и у меня есть кнопка и отключенный ввод, я хочу, чтобы я нажмите на эту кнопку, если возвращаемое значение true, чтобы разрешить ввод, и если false, чтобы скрыть ввод и показать предложение, что этот автомобиль не подлежит возврату, код, который я сделал, проверяет, является ли возвращаемое значение true или нет, и он разрешает ввод, но если он был ложным, он показывает ложное предложение для всех автомобилей в списке, вот что я делаю:
Исходное состояние:
state={cars: [],isInputDisabled: [], isVisible: true }
Функция при нажатии кнопки:
changeDisableState = (id, i) => {
const car = this.state.cars.find(x => x.id === id);
let isInputDisabled = this.state.isInputDisabled;
isInputDisabled[i] = !isInputDisabled[i];
if (car.refundable == true) {
this.setState({ isInputDisabled });
} else {
this.setState({ isVisible: false });
}
};
Рендеринг автомобилей:
renderCars() {
const cars = this.state.cars;
return cars.map((car, i) => (
<div key={car.id}>
<Button onClick={() => this.changeDisableState(car.id, i)}>Check</Button>
{this.state.isVisible ?
<input
disabled={!this.state.isInputDisabled[i]}/> : <p>Can't be refundable</p>}
</div>
));
}