Как мне в данном запросе обработать ошибку с определенным статусом?
Функция
export function createHouse(project_id, name, coords, district, website) { const token = localStorage.getItem('token') const request_json = { "name": name, "coords": coords, "district": district, "website": website, } const response = fetch('https://jsonplaceholder.typicode.com/postsf', { method: 'POST', headers: { "Authorization": `Bearer ${token}`, "Content-Type": 'application/json' }, body: JSON.stringify(request_json), }).then((res) => { if(res.status == 404) { console.log("error") } }) } |
export function createHouse(project_id, name, coords, district, website) { const token = localStorage.getItem('token') const request_json = { "name": name, "coords": coords, "district": district, "website": website, } const response = fetch('https://jsonplaceholder.typicode.com/postsf', { method: 'POST', headers: { "Authorization": `Bearer ${token}`, "Content-Type": 'application/json' }, body: JSON.stringify(request_json), }).then((res) => { if(res.status == 404) { console.log("error") } }) }
Компонента в которую я экспортирую функцию
import { useEffect, useState } from "react" import { sendAuthRequest } from "./api"; import axios from "axios"; import { NavLink } from "react-router-dom"; import { createHouse } from "./api"; const Projects = () => { const [name, setname] = useState(); const [coords, setcoords] = useState(); const [district, setdistrict] = useState(); const [website, setwebsite] = useState(); function click() { createHouse(name, coords, district, website); } return ( <div> <form> <input value={name} onChange={e => { setname(e.target.value) }} type="text" className="login" /> <input value={coords} onChange={e => { setcoords(e.target.value) }} type="text" className="password" /> <input value={district} onChange={e => { setdistrict(e.target.value) }} type="text" className="login" /> <input value={website} onChange={e => { setwebsite(e.target.value) }} type="text" className="password" /> <button onClick={click} type="submit">Добавить</button> </form> <NavLink to="/"><button>назад</button></NavLink> </div> ) } export default Projects |
import { useEffect, useState } from "react" import { sendAuthRequest } from "./api"; import axios from "axios"; import { NavLink } from "react-router-dom"; import { createHouse } from "./api"; const Projects = () => { const [name, setname] = useState(); const [coords, setcoords] = useState(); const [district, setdistrict] = useState(); const [website, setwebsite] = useState(); function click() { createHouse(name, coords, district, website); } return ( <div> <form> <input value={name} onChange={e => { setname(e.target.value) }} type="text" className="login" /> <input value={coords} onChange={e => { setcoords(e.target.value) }} type="text" className="password" /> <input value={district} onChange={e => { setdistrict(e.target.value) }} type="text" className="login" /> <input value={website} onChange={e => { setwebsite(e.target.value) }} type="text" className="password" /> <button onClick={click} type="submit">Добавить</button> </form> <NavLink to="/"><button>назад</button></NavLink> </div> ) } export default Projects
Дополнительно:
}).then((res) => { if(res.status == 404) { console.log(res.errors) // оно? } }) |
}).then((res) => { if(res.status == 404) { console.log(res.errors) // оно? } })
Ответы:
https://react.dev/reference/react-dom/components/form
Преврати свой createHouse в action для формы(подробнее - ссылка выше) и замени все useState на один useState для состояния ошибок.
setState ошибок используй в вышеупомянутом action
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для обработки ошибки с определенным статусом в вашем запросе, вам необходимо добавить соответствующий блок кода для обработки исключений. В языке программирования PHP это можно сделать с помощью конструкции try-catch.
Прежде всего, нужно определить, какой статус ошибки вас интересует. Например, если вам нужно обработать ошибку с HTTP статусом 404 (Not Found), ваш код может выглядеть следующим образом:
try { // ваш запрос или код, который может вызвать ошибку } catch (Exception $e) { if ($e->getCode() == 404) { // обработка ошибки с HTTP статусом 404 echo "Ошибка 404: страница не найдена"; } else { // обработка других ошибок echo "Произошла ошибка: " . $e->getMessage(); } }
В данном примере, мы оборачиваем код, который может вызвать ошибку, в блок try. Если происходит ошибка, она поймается блоком catch. Затем мы проверяем код ошибки с помощью метода getCode() объекта Exception. Если код ошибки равен 404, то выводим сообщение об ошибке "Ошибка 404: страница не найдена". В противном случае выводим общее сообщение об ошибке.
Помните, что код ошибки может быть разным в зависимости от используемой API или библиотеки, поэтому убедитесь, что вы правильно определили статус ошибки, с которым вам нужно работать.