react-transition-group은 리액트 라이브러리 입니다. 이 라이브러리를 통해 컴포넌트 등장, 퇴장할 때에 애니메이션을 쉽게 적용할 수 있습니다.

react-transition-group으로 컴포넌트 등장, 삭제 시 애니메이션 넣기

 

목차

 

1. react-transition-group란?

2. 사용법

3. 구현된 코드로 보기

 

1. react-transition-group란?

  • react 어플리케이션에서 애니메이션를 쉽게 사용하기 위한 라이브러리.
  • 컴포넌트가 마운트(등장), 업데이트, 언마운트(삭제)될 때 애니메이션 효과를 적용할 수 있게 해줌

2. 사용법

  • react-transition-group 라이브러리 설치
npm i react-transition-group
  • 애니메이션 만들기
//index.css

.fade-enter {     
// 컴포넌트 마운트 시 애니메이션 시작할때의 css 설정.
  transform: translateX(-300px);
}

.fade-enter-active {   
// 컴포넌트 마운트 시 애니메이션 끝났을 때의 css 설정.
  transform: translateX(0);
  transition: transform 300ms ease-in-out;
}

.fade-exit {            
// 컴포넌트 언마운트 시 애니메이션 시작할 때의 css 설정.
  transform: translateX(0);
}

.fade-exit-active {     
// 컴포넌트 언마운트 시 애니메이션 끝났을 때의 css 설정.
  transform: translateX(-300px);
  transition: transform 300ms ease-in-out;
}
  • CSSTransition 컴포넌트로 애니메이션 실행할 컴포넌트 감싸주기
import { useState } from "react";
import { CSSTransition } from "react-transition-group";    
// 라이브러리에서 불러오기.

function App() {
  const [isShow, setIsShow] = useState(false);     
  // 컴포넌트 렌더링 조건을 담당하는 state 값.

  const toggle = () => {
    setIsShow((prevState) => !prevState);
  };

  return (
    <div className="App">
      <button onClick={toggle}>{isShow ? "Hide" : "Show"}</button>     
      // 버튼을 눌러서 컴포넌트 렌더링 여부 달라짐.
      <CSSTransition 

        in={isShow}       
        // 애니메이션의 실행 기준이 되는 상태 값.

        timeout={300}     
        // 애니메이션의 실행시간.

        classNames="fade"  
        // 애니메이션의 class 명

        unmountOnExit>      
        // 애니메이션 실행된 이후 unmount 할 것인지에 대한 설정. 해당 값이 true면 fade-exit 애니메이션이 실행된 이후 컴포넌트가 사라짐.

        <div>애니메이션</div>  

      </CSSTransition>
    </div>
  );
}

export default App;

3. 구현된 코드로 보기

mobx는 react의 상태 관리 라이브러리 입니다. class 형태로 작성하여 프로퍼티, 메서드 형태로 상태를 관리 합니다.

mobx 사용하기

 

목차

 

1. mobx란?

2. 장점

3. 단점

4. 사용법

5. 구현된 코드로 보기

 

1. mobx란?

  • react 내에서 전역 상태 관리를 할 때에 사용하는 라이브러리
  • class로 만들어서 사용
  • 관리하는 상태 값은 클래스의 프로퍼티로, 상태를 변경하는 함수는 클래스의 메서드로 생성

2. 장점

  • 코드량이 적음(boilerlplate가 적음)
    • redux는 action, reducer, store 등 작성해야하는 코드가 많음
    • mobx는 class를 만들어 프로퍼티와 메서드를 생성해주면 됨

 

  • 비동기 처리 간편
    • 생성한 메서드에 async/await 키워드를 사용하면 됨

3. 단점

  • redux와 비교해 점유율이 낮은 편
    • 관련 자료를 찾을 경우 redux가 찾기가 편할 수 있으며, 레거시 코드들의 경우 redux를 사용했을 경우가 많음

 

압도적인 redux의 점유율

 

4. 사용법

  • mobx 설치
npm install --save mobx mobx-react-lite
  • store 생성
//store/counterStore.js

import { makeAutoObservable } from "mobx";

class CounterStore {
  count = 0;

  constructor() {
    makeAutoObservable(this);
  }

  increment() {
    this.count++;
  }

  decrement() {
    this.count--;
  }
}

export default new CounterStore();
  • observer를 통해 상태를 감지, 변경
import { observer } from "mobx-react-lite";
import counterStore from "./store/counterStore";
import "./App.css";
import Test from "./Test";

const App = observer(() => {   // observer로 사용.
  const handleIncrease = () => {
    counterStore.increment();   // class에서 지정한 메서드로 상태 변경
  };

  const handleDecrease = () => {
    counterStore.decrement();   
  };

  return (
    <div>
      <button onClick={handleDecrease}>-</button>
      <span>{counterStore.count}</span>   // class의 프로퍼티로 상태 불러오기
      <button onClick={handleIncrease}>+</button>

      <Test></Test>
    </div>
  );
});

export default App;

(사진) 카운터로 구현한 예시

5. 구현된 코드로 보기

axiosMockAdapter로 서버로 보내는 요청을 가로채 임의의 응답으로 바꿀 수 있습니다. 서버가 아직 완성되지 않은 단계에서 테스트 용도로 사용할 수 있습니다.

axiosMockAdapter로 테스트 응답 만들기

 

목차

 

1. axiosMockAdapter란?

2. json-server와의 차이

3. 사용법

4. 구현된 코드로 보기

 

1. axiosMockAdapter란?

  • axios를 통해 수행되는 HTTP 요청을 가로채서 가짜 응답을 반환하는 라이브러리
  • 실제 서버에 요청하지 않고도 API 호출을 테스트해 볼 수 있음

2. json-server와의 차이

  • localhost가 아닌 실제 URL로 작성해도 되서 편리
    • json-server는 localhost 포트로 열기 때문에 api 요청도 해당 주소로 보내줘야 함. 테스트 이후에는 실제 서버 URL로 변경해줘야 함
    • 그러나 axiosMockAdapter는 실제 서버 URL을 입력한 뒤, 가로채기만 하면 되므로, 이후 테스트가 끝난 후에는 가로채는 부분만 삭제해주면 정상 작동

 

  • js 파일로 작성하여 좀더 유연한 조작이 가능
    • json-server는 json을 통해 작성을 하므로 클라이언트에서 보낸 값에 특정 작업을 해야 할 경우, 조작하기가 어려움
    • 그러나 axiosMockAdapter는 js 파일로 작성하므로 조작이 좀더 자유로움

3. 사용법

  • axios-mock-adapter 설치

 

npm i axios;
npm i axios-mock-adapter --save-dev

 

  • 테스트하고자 하는 코드 작성
// example.js

import axios from "axios";
import MockAdapter from "axios-mock-adapter";

const mock = new MockAdapter(axios);

mock.onGet("https://example.com/post/read").reply((config) => {    // HTTP 요청 메서드에 맞춰 줌.
  return [200, { message: "쿼리 스트링으로 1 받았습니다." }];
});

mock.onPost("https://example.com/post/post").reply((config) => {
  const data = JSON.parse(config.data);
  return [200, { message: `본문으로 ${data.data.post} 받았습니다.` }];
});

export default mock;

 

  • 해당 URL로 요청 보내는 곳에 작성한 테스트 코드 불러오기

 

import { useEffect } from "react";
import "./App.css";
import axios from "axios";
import mock from "./mock/example";

function App() {
  useEffect(() => {
    async function getData() {
      const result = await axios.get("https://example.com/post/read", {
        params: {
          post: 1,
        },
      });
      console.log("getData의 결과는", result.data);
    }

    async function postData() {
      const result = await axios.post("https://example.com/post/post", {
        data: {
          post: 1,
        },
      });
      console.log("postData의 결과는", result.data);
    }

    getData();
    postData();
  }, []);

  return <div className="App">잘 되나 테스트</div>;
}

export default App;

4. 구현된 코드로 보기

 vercel에 env 파일을 사용하여 보안이 필요한 데이터를 따로 관리할 수 있습니다.

vercel에 env 파일 적용하기

 

목차

 

1. env 적용 이유

2. 적용법

 

1. env 적용 이유

  • api 키, 데이터 베이스 비밀번호 등 git repository에 그대로 업로드 하기에는 보안 위험이 있는 내용들을 따로 관리하기 위함
  • process.env를 통해 env 파일에 작성한 내용들을 불러 올 수 있음

2. 적용법

  • vercel 설정에서 env 파일 등록

 

env 파일을 선택하면 자동으로 변수 입력됨

'배포 > vercel' 카테고리의 다른 글

vercel로 간편 배포하기  (0) 2023.10.06

vercel은 정적 페이지를 간단하게 배포할 수 있도록 도와줍니다. github와 연동하여 작성한 프론트 프로젝트를 간단한 설정을 통해 배포할 수 있습니다.

vercel로 간편 배포하기

 

목차

 

1. vercel이란?

2. 장점

3. 사용법

 

1. vercel이란?

  • 정적 웹사이트를 배포할 때 사용할 수 있는 클라우드 플랫폼
  • github와 연동하여 git repository에 생성한 정적 웹사이트를 빠르게 배포 가능

2. 장점

  • 빠른 배포 속도
    • github와 연동하여 생성한 프로젝트를 간단한 설정만으로 배포 가능

 

  • 무료
    • 무료 플랜이 있어, 토이 프로젝트 등 소규모 프로젝트 배포 용이

 

  • HTTPS 지원
    • 무료 SSL/TLS 인증서 제공하여 어플리케이션 안전하게 배포 가능

3. 사용법

  • 다음 과정 따라가기

 

vercel에 깃허브와 연동하여 로그인

 

 

프로젝트 등록 페이지로 이동

 

 

 

프로젝트 레파지토리 선택

 

 

설정 후 배포

 

 

배포된 내용 확인

 

 

 

배포 url 확인하기

 

 

'배포 > vercel' 카테고리의 다른 글

vercel에 env 파일 적용하기  (0) 2023.10.06

flex를 이용해 header, main, footer를 배치하는 방법을 알아봅니다. flex를 이용할 경우, 특정 크기를 지정하지 않고 남은 공간에 알아서 배치되기 때문에, 유지 보수에 용이합니다.

flex 이용해서 footer 배치하기

 

목차

 

1. 기능 소개

2. 코드

3. 구현 코드로 보기

 

1. 기능 소개

  • footer는 화면 제일 하단에 고정시켜야 함.
  • flex를 사용하면 header, footer의 특정 값을 부여하지 않아도 되기 때문에 수정이 용이함

 

main에 들어갈 내용이 꽉 차지 않으면 footer도 덩달아 올라와 버림

 

flex를 적용하여 하단에 고정한 모습

2. 코드

  • Head, Main, Footer생성
import Head from "./component/Head";
import Main from "./component/Main";
import Footer from "./component/Footer";

function App() {
  return (
    <div className="app">
      <Head></Head>
      <Main></Main>
      <Footer></Footer>
    </div>
  );
}

export default App;
  • flex 배치 후, main에만 flex: 1 속성 부여
body {
  margin: 0;
  padding: 0;
  min-height: 100vh;
}

.app {
  display: flex;
  flex-direction: column;

  // 화면 꽉 채우기 위해 최소 높이 설정
  min-height: 100vh;
}

.head,
.main,
.footer {
  border: 1px solid black;
  padding: 10px;
}

.main {

  // head, footer를 제외한 모든 공간을 main이 차지하도록 함
  flex: 1
}

3. 구현 코드로 보기

 

tailwindcss를 사용하는 방법을 알아봅니다. tailwindcss는 미리 지정된 클래스를 적용하여 스타일을 빠르게 구현할 수 있습니다.

tailwindcss 사용하기

 

목차

 

1. tailwindcss란?

2. 장점

3. 단점

4. 사용법

5. 클래스 검색

6. 구현 코드로 보기

 

1. tailwindcss란?

  • css 프레임워크
  • 스타일이 적용된 클래스를 사용하여 스타일을 빠르게 적용 가능

2. 장점

  • 빠른 개발 속도
    • 이미 지정된 클래스를 사용하므로 빠른 구현 가능
  • 문서화
    • 문서화가 잘 되어 있어 관련 자료 찾기가 수월

3. 단점

  • 클래스가 많아질 시 코드의 복잡성 증가
    • 스타일이 많이 적용될 경우, 적용되는 클래스가 많아지고 결과적으로는 HTML 코드가 길어지게 됨

4. 사용법

  • tailwindcss 설치 
  • npm install -D tailwindcss postcss autoprefixer
    npx tailwindcss init -p
  • 스타일 적용하기
    /** index.css 파일. 최상단에 추가 */
    @tailwind base;
    @tailwind components;
    @tailwind utilities;
  • 사용하기
    export default function App() {
    return (
      <h1 className='text-3xl font-bold underline'>
        Hello world!
      </h1>
    )
    }

5. 클래스 검색

  • 공식 문서 검색하기

 

해당 부분만 찾아 들어가면 OK

 

  • vscode의 Tailwind CSS IntelliSense 익스텐션 설치

 

인증 마크 확인하기

6. 구현 코드로 보기

자료 구조 중 리스트에 대해 알아보겠습니다. 리스트란 여러 항목을 순서대로 나열한 구조를 의미합니다.

리스트란 무엇인가?

 

목차

 

1. 개념

2. 특징

3. 장점

4. 단점

5. 구현

 

1. 개념

  • 여러 항목을 순서대로 나열한 것

2. 특징

  • 순서
    • 항목은 순서대로 나열되어, 고유한 위치(인덱스를 가지고 있음)
  • 가변성
    • 필요에 따라 항목 추가, 삭제 가능
  • 항목의 다양성
    • 다양한 데이터 형식이 들어갈 수 있음. 항목마다 데이터 형식이 달라도 괜찮음
  • 인덱스 엑세스
    • 리스트의 항목은 인덱스를 통해 엑세스 가능

3. 장점

  • 인덱스를 통한 빠른 접근
    • 인덱스를 통해 항목에 접근이 가능하므로, 임의 인덱스에 빠른 접근이 가능

4. 단점

  • 삽입 및 삭제 비용 높음
    • 데이터를 삽입하거나 삭제할 때, 전체 인덱스에 대한 수정이 필요.(한칸씩 당기거나, 한칸씩 밀어야 함)
  • 검색 시간
    • 특정 항목을 검색할 때에 모든 인덱스를 조회해야 하므로 큰 리스트의 경우 검색 속도가 느릴 수 있음 O(n)

5. 구현

  • 자바스크립트의 배열(array)
const arr = [1, 2, 3];

// 조회
arr[1];

// 추가
arr.push(2);

// 삭제
arr.shift();

// 검색
for (let i = 0; i <= 2; i++) {
   if (i === 2) {
      console.log("true")
     }
}

쿼리에서는 WHERE 절을 통해 찾고자 하는 조건을 만들어 낼 수 있습니다. WHERE 절에 사용할 수 있는 연산자와 함수를 알아보겠습니다.

WHERE절 이해하기

 

 목차

 

1. 비교 연산자

2. 논리 연산자

3. 패턴 매칭

4. 범위

5. NULL 검사

 

1. 비교 연산자

  • 대소 비교 혹은 일치하는 지를 확인
  • '=', '!=' : 같거나, 같지 않음
WHERE name = 'ddmoon';

2. 논리 연산자

  • 1개 이상의 조건의 참, 거짓을 확인
  • 'AND' 또는 '&&' : 주어진 조건을 모두 만족
WHERE name = 'ddmoon' AND age >= 20;
  • 'OR' 또는 '||' : 주어진 조건 중 1개 이상 만족
WHERE name = 'ddmoon' OR age >= 20;
  • 'NOT' : 주어진 조건을 만족하지 않음
WHERE NOT name = 'ddmoon';

3. 패턴 매칭

  • 특정 패턴과 일치하는지 확인
  • 'LIKE': 주어진 패턴을 일부 가지고 있음
WHERE name LIKE '김%'; // 김으로 시작하는 모든 이름들이 해당됨
  • 'IN': 주어진 패턴 중 하나임
WHERE job IN ('소방관', '경찰관', '군인);

4. 범위

  • 일정 구간 안에 속하는지 확인
  • 'BETWEEN': 주어진 범위에 속함
WHERE age BETWEEN 20 AND 30;
  • 'NOT BETWEEN': 주어진 범위에 속하지 않음
WHERE age NOT BETWEEN 20 AND 30;

5. NULL 검사

  • 컬럼 값이 NULL인지 확인
  • 'IS NULL': 해당 칼럼 값이 NULL인 경우
WHERE name IS NULL;
  • 'IS NOT NULL': 해당 칼럼 값이 NULL이 아닌 경우
WHERE name IS NOT NULL;

'sql > 쿼리문 작성' 카테고리의 다른 글

SQL 쿼리의 기본 CRUD 공부하기  (0) 2023.08.23

CRUD에 해당하는 기본 쿼리문에 대해 알아보겠습니다.

SQL 쿼리의 기본 CRUD 공부하기

 

 목차

 

1. CREATE

2. READ

3. UPDATE

4. DELETE

 

1. CREATE

  • INSERT INTO 문 사용
INSERT INTO 테이블이름 (컬럼1, 컬럼2, 컬럼3)
VALUES (컬럼1에 들어갈 값, 컬럼2에 들어갈 값, 컬럼3에 들어갈 값);

2. READ

  • SELECT 문 사용
SELECT 컬럼1, 컬럼2, 컬럼3
FROM 테이블이름
WHERE 조건문;

3. UPDATE

  • UPDATE 문 사용
UPDATE 테이블이름
SET 값바꿀칼럼1 = 바꿀값1, 값바꿀칼럼2 = 바꿀값2
WHERE 조건문;

4. DELETE

  • DELETE 문 사용
DELETE FROM 테이블이름
WHERE 조건문;

'sql > 쿼리문 작성' 카테고리의 다른 글

WHERE절 이해하기  (0) 2023.08.23

+ Recent posts