Вопрос проверяет понимание оптимистических обновлений в UI и методов индикации фоновых операций для улучшения пользовательского опыта.
Оптимистическое обновление — это подход, при котором интерфейс пользователя (UI) обновляется немедленно после выполнения действия, предполагая, что запрос к серверу будет успешным. Это улучшает восприятие скорости работы приложения, так как пользователь не ждет ответа от сервера. Однако, если запрос завершается ошибкой, необходимо откатить изменения и уведомить пользователя.
Для индикации фонового обновления можно использовать несколько методов:
import { useState } from 'react';
function TodoApp() {
const [todos, setTodos] = useState([]);
const [loading, setLoading] = useState(false);
const addTodo = async (text) => {
const optimisticTodo = { id: Date.now(), text, completed: false };
setTodos(prev => [...prev, optimisticTodo]);
setLoading(true);
try {
const response = await fetch('/api/todos', {
method: 'POST',
body: JSON.stringify({ text }),
});
if (!response.ok) throw new Error('Failed');
const savedTodo = await response.json();
setTodos(prev => prev.map(t => t.id === optimisticTodo.id ? savedTodo : t));
} catch {
setTodos(prev => prev.filter(t => t.id !== optimisticTodo.id));
alert('Ошибка при добавлении задачи');
} finally {
setLoading(false);
}
};
return (
<div>
{loading && <span>Сохранение...</span>}
<ul>{todos.map(t => <li key={t.id}>{t.text}</li>)}</ul>
</div>
);
}Оптимистические обновления стоит применять в приложениях, где важна отзывчивость интерфейса, например, в социальных сетях или мессенджерах. Индикация фонового обновления помогает пользователю понимать состояние системы и избегать путаницы при возможных ошибках.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию