반응형
가. 예외처리용 컴포넌트 작성
==> 예외발생시 랜더링됨
export function ResponseError( ){
return (
//예외메세지
);
}
import logo from './logo.svg';
import './App.css';
import {useEffect, useState } from 'react';
import UserList from './components/UserList';
import { fetchUserList } from './http/HttpService';
import ResponeError from './components/ResponseError';
function App() {
const [userList, SetUserList] = useState([]);
const [error, SetError] = useState(null);
//서버에서 한번만 땡겨오면 됌, 단 한번만 실행은 빈배열 => []
useEffect(()=>{
var req = async function() {
try{
var userList = await fetchUserList(2);
SetUserList(userList);
}catch(err){
console.log("App.fetchUserList", err);
SetError({message:"fetchUserList 에러발생"});
}
};
req();
}, []);
return (
<div className="App">
{ error && <ResponeError message={error}/> }
{ !error && <UserList userList={userList}/> }
</div>
);
}
export default App;
export async function fetchUserList(n){
var response = await fetch(url, {
method: 'PUT'
});
if(!response.ok){
console.log("fetchUserList Error 발생");
throw new Error("fetchUserList Error 발생");
}
//예외가 발생되면 에러가 호출한 곳(fetchUserList)으로 넘어감
//호출한곳에서 try catch 하면됨
var json = await response.json();
var userList = json.data;
return userList;
}
export async function fetchUserUpdate(){
}
export async function fetchUserSave(){
}
function ResponeError({message}){
return(
<>
<h2>에러 페이지</h2>
{message.message}
</>
);
}
export default ResponeError;
728x90
반응형
'React' 카테고리의 다른 글
추가하기 ( input으로 입력 받은 데이터 추가하기 ) (0) | 2024.07.03 |
---|---|
삭제 (0) | 2024.07.03 |
서버 연동 (0) | 2024.07.02 |
side Effect ( clean up ) (0) | 2024.07.02 |
side effect 실습 (0) | 2024.07.02 |