Задать вопрос
@HelloJesus

Как вернуть прежний checkbox при неудачном запросе на сервер?

Не буду кидать весь проект(так как он не поместится):
App компонента:
const App = ({}) =>{
let [task, setTask] = useState('')

useEffect(()=>{
axios.get('http://localhost:3000/task').then((res)=>{
setTask(res.data)
}
}, [])

const onUpdateTask = (isCompleted)=>{
//обновление state
}

const updateTask = (isCompleted) => {
        axios.patch('http://localhost:3000/task' , {
            isCompleted: isCompleted
        }).then(() => {
            onUpdateTask(isCompleted)
        }).catch(() => {
            alert('не удалось обновить задачу')
        })
    }
return <Task item={item} updateTask ={updateTask }/>
}


Task компонента:
const Task = ({item, updateTask }) =>{
let [checked, setChecked] = useState(item.isCompleted)
}

const changeIsCompleted = () =>{
setChecked(!checked)
updateTask (!checked)
}

return <div>
<label>
<input  type="checkbox"  checked={checked || ''}  onChange={() => changeIsCompleted()}/>
<span className={item.isCompleted ? "active" : ""}>Кастомный checkbox</span>
</label>
</div>
}

Допустим у юзера слабое 3g интернет соединение.
Когда юзер делает клик по input, то на сервер отправляется запрос, пока он обрабатывается, юзер не видит результата.
Он снова кликает, потому что не понимает почему не работает.
Подождав 2-3 секунды, он видит результат.
Как сделать так, чтобы результат клика было сразу видно, но, если с сервера приходил неудачный ответ, то возвращать значение checkbox на место?
  • Вопрос задан
  • 37 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    Разработка на React
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 250 000 до 300 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽