React를 사용하여 농담 생성기 만들기

소개
이 튜토리얼에서는 React를 사용하여 간단하고 재미있는 Joke Generator를 구축하는 방법을 안내합니다. 이 프로젝트는 React에서 API 요청 처리 및 기능적 구성 요소 내 상태 관리를 연습하려는 초보자에게 적합합니다.
프로젝트 개요
이 농담 생성기는 API에서 임의의 농담을 가져와 사용자가 버튼을 클릭하면 화면에 표시합니다. 깨끗하고 최소한의 사용자 인터페이스를 갖추고 있어 상호 작용이 간단합니다. 이 프로젝트에서는 React에서 API를 통합하고 구성요소 상태를 관리하는 방법을 가르칩니다.
특징
- Random Joke Generation: API에서 임의의 농담을 가져와서 화면에 표시합니다.
- 반응형 디자인: 사용자 친화적인 경험을 위해 다양한 화면 크기에 맞게 조정됩니다.
- 사용하기 쉬운 인터페이스: 클릭할 때마다 새로운 농담을 생성하는 단일 버튼.
사용된 기술
- React: 사용자 인터페이스 구축용.
- CSS: 애플리케이션 스타일을 지정하고 반응형 디자인을 보장합니다.
- Joke API: 웹에서 임의의 농담을 가져옵니다.
프로젝트 구조
프로젝트의 구성은 다음과 같습니다.
├── public ├── src │ ├── components │ │ └── Joke.jsx │ ├── App.jsx │ ├── App.css │ ├── index.js │ └── index.css ├── package.json └── README.md
주요 구성 요소
- Joke.jsx: 농담을 가져오고 표시하는 논리가 포함되어 있습니다.
- App.jsx: Joke 구성 요소를 래핑하고 애플리케이션의 전체 레이아웃을 처리합니다.
- App.css: 앱과 구성요소에 대한 스타일을 제공합니다.
코드 설명
농담 구성 요소
Joke 구성 요소는 API에서 농담을 가져오고 구성 요소의 상태를 업데이트하여 농담을 표시하는 역할을 담당합니다. React의 useState 후크를 사용하여 농담 상태를 관리하고 fetchJoke 함수를 사용하여 API에서 데이터를 검색합니다.
import { useState } from "react";
const Joke = () => {
const [joke, setJoke] = useState("");
const fetchJoke = () => {
fetch("https://v2.jokeapi.dev/joke/Any?type=single")
.then((response) => response.json())
.then((data) => setJoke(data.joke));
};
return (
<>
<div className="joke-container">
<div className="output">
<p>{joke}</p>
</div>
</div>
<button className="button" onClick={fetchJoke}>
<p>Generate Joke</p>
</button>
</>
);
};
export default Joke;
이 구성요소에서는 useState 후크를 사용하여 가져온 농담을 저장합니다. "농담 생성" 버튼을 클릭하면 fetchJoke 기능이 실행되어 API에서 새 농담을 가져오고 그 결과로 농담 상태를 업데이트합니다.
앱 구성요소
App 구성 요소는 전체 레이아웃을 처리하고 Joke 구성 요소를 렌더링합니다. 또한 애플리케이션의 모양을 향상시키기 위한 머리글과 바닥글도 포함되어 있습니다.
import Joke from "./components/Joke";
import "./App.css";
const App = () => {
return (
<div className="app">
<div className="header">
<h1>Joke Generator</h1>
</div>
<Joke />
<div className="footer">
<p>Made with ❤️ by Abhishek Gurjar</p>
</div>
</div>
);
};
export default App;
이 구성요소는 레이아웃을 구성하고 제목(농담 생성기)과 작성자를 표시하는 바닥글을 추가합니다.
CSS 스타일링
CSS 스타일을 사용하면 레이아웃이 깔끔하고 반응성이 좋습니다. 농담 컨테이너가 페이지 중앙에 배치되고, 버튼이 모던한 느낌을 주는 스타일로 디자인되었습니다.
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
font-family: sans-serif;
background-color: #ffff42;
color: black;
}
.app {
margin-top: 50px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.header {
margin-bottom: 10px;
}
.joke-container {
margin: 15px;
width: 400px;
height: 180px;
display: flex;
flex-direction: column;
align-items: center;
border: 1px solid black;
background-color: #c2edf6;
border-radius: 7px;
}
.output {
width: 350px;
font-size: 16px;
font-weight: 500;
}
.button {
width: 400px;
background-color: #0075e1;
border: none;
color: white;
font-size: 18px;
cursor: pointer;
border-radius: 10px;
}
.button:hover {
background-color: #4086c8;
}
.footer {
margin-top: 100px;
}
.app 클래스는 기본 레이아웃 스타일을 지정하고, .joke-container는 농담이 테두리가 있는 컨테이너 내에 표시되도록 하며, .button은 농담 생성 버튼에 대한 스타일을 제공합니다.
설치 및 사용법
이 프로젝트를 시작하려면 저장소를 복제하고 종속성을 설치하세요.
git clone https://github.com/abhishekgurjar-in/joke-generator.git cd joke-generator npm install npm start
이렇게 하면 개발 서버가 시작되고 애플리케이션은 http://localhost:3000에서 실행됩니다.
라이브 데모
여기에서 농담 생성기의 라이브 데모를 확인할 수 있습니다.
결론
이 간단한 Joke Generator 프로젝트는 상태 관리 및 API 요청을 포함한 React 기본 사항을 연습할 수 있는 좋은 방법입니다. 또한 최소한의 코드로 대화형 웹 애플리케이션을 만드는 방법을 보여주는 예이기도 합니다.
크레딧
- 영감: 이 프로젝트는 온라인 농담 생성기와 API 기반 프로젝트에서 영감을 받았습니다.
작가
Abhishek Gurjar는 대화형 및 반응형 웹 애플리케이션 구축에 열정을 갖고 있는 웹 개발자입니다. GitHub에서 그의 작업을 팔로우할 수 있습니다.
위 내용은 React를 사용하여 농담 생성기 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!
핫 AI 도구
Undress AI Tool
무료로 이미지를 벗다
Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱
AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.
Clothoff.io
AI 옷 제거제
Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!
인기 기사
뜨거운 도구
메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.
스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
드림위버 CS6
시각적 웹 개발 도구
SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)
뜨거운 주제
8647
17
1790
16
1732
56
1583
29
1453
31
'렌더 블로킹 CSS'란 무엇입니까?
Jun 24, 2025 am 12:42 AM
CSS는 페이지 렌더링 브라우저가 기본적으로 인라인 및 외부 CSS를 기본적으로 핵심 리소스로보고, 특히 수입 된 스타일 시트, 헤더가 많은 양의 인라인 CSS 및 최적화되지 않은 미디어 쿼리 스타일을 사용하기 때문에 페이지 렌더링. 1. 임계 CSS를 추출하여 HTML에 포함 시키십시오. 2. JavaScript를 통한 비정규 CSS 지연; 3. 미디어 속성을 사용하여 인쇄 스타일과 같은로드를 최적화합니다. 4. CSS를 압축하고 병합하여 요청을 줄입니다. 주요 CSS를 추출하기 위해 도구를 사용하고 Rel = "Preload"비동기로드를 결합하고, 미디어 지연 로딩을 합리적으로 사용하여 과도한 분할 및 복잡한 스크립트 제어를 피하십시오.
autopRefixer 란 무엇이며 어떻게 작동합니까?
Jul 02, 2025 am 01:15 AM
AutoPrefixer는 대상 브라우저 범위를 기반으로 공급 업체 접두사를 CSS 속성에 자동으로 추가하는 도구입니다. 1. 오류가있는 접두사를 수동으로 유지하는 문제를 해결합니다. 2. PostCSS 플러그인 양식, CSS를 구문 분석하고 접두사를 조정 해야하는 속성을 분석하고 구성에 따라 코드를 생성합니다. 3. 사용 단계에는 플러그인 설치, 브라우저리스트 설정 및 빌드 프로세스에서이를 활성화하는 것이 포함됩니다. 4. 참고에는 수동으로 접두사를 추가하지 않고 구성 업데이트, 접두사가 모든 속성이 아닌 접두사를 유지하며 전처리기와 함께 사용하는 것이 좋습니다.
Conic-Gradient () 함수는 무엇입니까?
Jul 01, 2025 am 01:16 AM
theconic-gradient () functionincsscreatescurcular gradientsthattroTecolorstopsaroundacentral point
끈적 끈적한 헤더 또는 바닥 글을 만드는 CSS 튜토리얼
Jul 02, 2025 am 01:04 AM
ToTeCreatesTickyHeaders andfooterswithcss, 사용 위치 : stickyforheaderswithTopvalueAndz-index
CSS 사용자 정의 속성의 범위는 얼마입니까?
Jun 25, 2025 am 12:16 AM
CSS 사용자 정의 속성의 범위는 선언의 컨텍스트에 따라 다르고, 글로벌 변수는 일반적으로 다음과 같이 정의되며, 로컬 변수는 구성 요소화 및 스타일의 분리를 위해 특정 선택기 내에 정의됩니다. 예를 들어 .card 클래스에 정의 된 변수는 클래스와 자녀와 일치하는 요소에 대해서만 사용할 수 있습니다. 모범 사례는 다음과 같습니다. 1. 사용 : 주제 색상과 같은 글로벌 변수를 정의하기위한 루트; 2. 구성 요소 내부의 로컬 변수를 정의하여 캡슐화를 구현합니다. 3. 동일한 변수를 반복적으로 선언하지 마십시오. 4. 선택기 특이성으로 인해 발생할 수있는 적용 범위 문제에주의하십시오. 또한 CSS 변수는 사례에 민감하며 오류를 피하기 위해 사용하기 전에 정의해야합니다. 변수가 정의되지 않았거나 참조가 실패하면 폴백 값 또는 기본값 초기가 사용됩니다. 브라우저 개발자를 통해 디버그를 수행 할 수 있습니다
CSS 그리드의 FR 장치는 무엇입니까?
Jun 22, 2025 am 12:46 AM
thefrunitincssgriddistributesaveailablespaceproproproproproproprically.1.itworksbydividingspacebasedonthesumoffrvalues, 예를 들어, 1fr2frgives-thirdandtwo-thirds.2.itenablesflexiblelayouts, propehmanualcalculations, andsupportsronspons responsevestessinconsponsponsevestesnevestesnevesteStonsponsevesteSponsevesteSponsevesteStronsponsevesteStonsprongesteSports responsevesteStonSpronsponseves.
CSS 그리드 품목 내부에 Flexbox 컨테이너를 중첩 할 수 있습니까?
Jun 22, 2025 am 12:40 AM
예, CSSGRID 항목에서 FlexBox를 사용할 수 있습니다. 구체적인 접근법은 먼저 그리드로 페이지 구조를 나누고 하위 함유기를 플렉스 컨테이너로 그리드 셀로 설정하여보다 미세한 정렬 및 배열을 달성하는 것입니다. 예를 들어, 디스플레이와 함께 div를 둥지 : HTML의 Flex 스타일; 이를 수행하는 이점에는 계층 적 레이아웃, 쉬운 반응 형 디자인 및보다 친근한 구성 요소 개발이 포함됩니다. 디스플레이 속성은 직접 자식 요소에만 영향을 미치고 과도한 중첩을 피하며 이전 브라우저의 호환성 문제를 고려합니다.
모바일 우선 디자인에 중점을 둔 CSS 튜토리얼
Jul 02, 2025 am 12:52 AM
Mobile-FirstcsSdesignRequiresTtingTheviewPortMetatag, RelativeUnits, StylingFromsMallScreensup, 최적화 획기적인 andtouchtargets.first, addtocontrolscaling.second, 사용%, em, orreminsteadofpixelsforflexelayouts.third


