Его появление обьясняют необходимостью еще одного запроса "между" GET и POST для поиска или фильтрации
GET -> идеален по семантике (идемпотентный, кэшируется), но параметры передаются в URL, а у него есть практические ограничения как минимум по длине и видимости данных
POST -> тело можно передавать любое, но это «изменение состояния», из за неидемпотентности его не кэшируют, нельзя безопасно повторять запрос при сбое.
QUERY берёт чуть-чуть от обоих: тело передаётся так же, как в POST, но при этом операция явно помечена как и идемпотентная.
Если на собеседовании зашла речь о методах, или упоминаются options(preflight) запросы, — плюс одна тема для обсуждения 🤓
А также в React 19.2 добавили уже 4-й!! подвид useEffect -> useEffectEvent
useEffect(() => {
const connection = createConnection(serverUrl, roomId);
connection.on('connected', () => {
showNotification('Connected!', theme);
});
connection.connect();
return () => {
connection.disconnect()
};
}, [roomId, theme]); // если тема поменяется, будет переподключение (обычно просто отключают линтер и убирают из массива зависимостей)С помощью useEffectEvent вы можете вынести «событийную» часть этой логики за пределы Effect, который её вызывает:
function ChatRoom({ roomId, theme }) {
const onConnected = useEffectEvent(() => {
showNotification('Connected!', theme);
});
useEffect(() => {
const connection = createConnection(serverUrl, roomId);
connection.on('connected', () => {
onConnected();
});
connection.connect();
return () => connection.disconnect();
}, [roomId]); // не зависим от темыВ целом так, для более удобного и логичного разрешения подобного кейса ввели новый хук 🌚
Если речь зашла о useLayoutEffect или useInsertionEffect, тоже можно упомянуть на собеседовании и обсудить, точно будет в плюс ✊
Если интересны новости и актуальные изменения, накидайте реакций 🤓, будем регулярно следить и разбирать их вместе с вами. Ну и оценить нововведения можно в комментариях)
Кто я | Кейсы | Менторство
