구글 캘린더를 따라 만들어보려고 하는데
사용할 라이브러리에 대해 알아보자
dayjs
달력 라이브러리들이 많은데 그 중에 dayjs를 선택한 이유는
- 다른 라이브러리들은 날짜만 나오는 게 아니고 위에 날짜(2023년 6월)까지 붙어나오는 경우가 많은데
분리가 안 돼서 따로따로 배치하는 것이 안 됐다. - javascript 날짜 관련 라이브러리 중 가장 가벼운 라이브러리이다
사용 방법
새로운 객체 생성
//현재 날짜, 시간이 포함된 객체
dayjs();
//지정한 날짜 객체 생성
dayjs('2023-06-23');
dayjs('2023-06-23 14:08:34');
날짜 형태 지정
let date = dayjs(2023-06-23 10:30:25')
date.format(); // 2023-06-23T10:30:25+09:00
date.format("YY-MM-DD"); // 23-06-23
date.format("DD/YY/mm); // 23/06/23
date.format("YYYY.MM.DD HH:mm:ss"); // 2023.06.23 10:30:25
날짜 가져오기 / 수정하기 (get / set)
let now = dayjs();
now.format();
//년
now.get("year");
now.get("y");
//월
now.get("month");
now.get("M");
//일
now.get("date");
now.get("D");
//요일 (일요일: 0, 토요일:6)
now.get("day");
now.get("d");
//시
now.get("hour");
now.get("h");
//분
now.get("minute");
now.get("m");
//초
now.get("second");
now.get("s");
//밀리초
now.get("millisecond");
now.get("ms");
원하는 값 넣기(set)
let date = dayjs("2023-06-23 10:00:00");
date.format(); // 2023-06-23T17:00:00+09:00
date.set("year", 2023).format(); // 2023-06-23T17:00:00+09:00
date.set("y", 2023).format(); // 2023-06-23T10:17:00+00:00
date.set("month", 11).format(); // 2023-06-23T17:00:00+09:00
date.set("M", 11).format(); // 2023-06-23T17:00:00+09:00
date.set("date", 25).format(); // 2023-06-23T17:00:00+09:00
date.set("D", 25).format(); // 2023-06-23T17:00:00+09:00
date.set("day", 5).format(); // 2023-06-23T17:00:00+09:00
date.set("day", 5).format("dddd"); // Friday
date.set("d", 5).format(); // 2023-06-23T17:00:00+09:00
date.set("d", 5).format("dddd"); // Friday
date.set("hour", 15).format(); // 2023-06-23T15:00:00+09:00
date.set("h", 15).format(); // 2023-06-23T15:00:00+09:00
date.set("minute", 45).format(); // 2023-06-23T17:45:0009:00
date.set("m", 45).format(); // 2023-06-23T17:45:00+09:00
date.set("second", 10).format(); // 2023-06-23T17:00:10+09:00
date.set("s", 10).format(); // 2023-06-23T17:00:10+09:00
날짜 더하기/빼기(add/subtract)
// 년도
dayjs().add(1, 'year');
dayjs().subtract(1, 'year');
// 월
dayjs().add(1, 'month');
dayjs().subtract(1, 'month');
// 일
dayjs().add(1, 'day');
dayjs().subtract(1, 'day');
// 시간
dayjs().add(1, 'hour');
dayjs().subtract(1, 'hour');
// 분
dayjs().add(1, 'minute');
dayjs().subtract(1, 'minute');
// 초
dayjs().add(1, 'second');
dayjs().subtract(1, 'second');
날짜/시간 차이 구하기
const date1 = dayjs("2022-12-01 12:30:25.123");
const date2 = dayjs("2021-10-24 13:23:50.456");
date1.format("YYYY-MM-DD HH:mm:ss.SSS"); // 2022-12-01 12:30:25.123
date2.format("YYYY-MM-DD HH:mm:ss.SSS"); // 2021-10-24 13:23:50.456
date1.diff(date2); // 34815994667
date1.diff(date2, "year"); // 1
date1.diff(date2, "y"); // 1
date1.diff(date2, "y", true); // 1.1047389818237257
date1.diff(date2, "month"); // 13
date1.diff(date2, "M"); // 13
date1.diff(date2, "M", true); // 13.256867781884708
date1.diff(date2, "week"); // 57
date1.diff(date2, "w"); // 57
date1.diff(date2, "w", true); // 57.566128748346564
date1.diff(date2, "day"); // 402
date1.diff(date2, "d"); // 402
date1.diff(date2, "d", true); // 402.9629012384259
date1.diff(date2, "hour"); // 9671
date1.diff(date2, "h"); // 9671
date1.diff(date2, "h", true); // 9671.109629722223
date1.diff(date2, "minute"); // 580266
date1.diff(date2, "m"); // 580266
date1.diff(date2, "m", true); // 580266.5777833334
date1.diff(date2, "second"); // 34815994
date1.diff(date2, "s"); // 34815994
date1.diff(date2, "s", true); // 34815994.667
date1.diff(date2, "millisecond"); // 34815994667
date1.diff(date2, "ms"); // 34815994667
date1.diff(date2, "ms", true); // 34815994667
참조 : https://stickode.tistory.com/668
tailwind
아직 리액트에 미숙한 나는 직관적으로 보기 좋고 사용하기 편리한 tailwind 라이브러리로 선택했다
설치방법
npm i -D tailwindcss
npm i -D postcss postcss-loader
npm i -D autoprefixer
Tailwind CSS : 우리가 사용하려고 하는 Tailwind CSS
PostCSS : 특수한 PostCSS 플러그인 구문을 그냥 Vanilla CSS로 바꿔주는 일종의 트랜스파일러
- Tailwind CSS를 해석해주는 친구, 웹팩이 읽을 수 있도록 Loader도 설치
Autoprefixer는 Vendor Prefix(벤더 프리픽스)를 자동으로 넣어주는 친구
postcss.config.js
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
}
}
postcss.config.js파일을 생성하고 위와 같이 채워준다.
->PostCSS가 Tailwind CSS를 해석해주는 설정
webpack.config.js에 loader추가
// ...
module.exports = {
// ...
module: {
rules: [
// ...
{
test: /\.css$/i,
use: ['style-loader', 'css-loader', 'postcss-loader']
}
]
}
}
tailwind.config.js 설정
npx tailwindcss init
디렉토리 상에서 위와 같이 명령어를 입력하면 tailwind.config.js라는 파일이 생성되고 템플릿이 자동으로 세팅
//tailwind.config.js
/* @type {import('tailwindcss').Config} */
module.exports = {
content: ['./src/**/*.{js,jsx,ts,tsx}'],
theme: {
extend: {}
},
plugins: []
}
styles/tailwind.css
// styles/tailwind.css
@import 'tailwindcss/base'
@import 'tailwindcss/components'
@import 'tailwindcss/utilities'
css파일에 위와 같이 넣어줌
src/index.js
//src/index.js
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
import './styles/tailwind.css'
const root = ReactDOM.createRoot(document.getElementById('root'))
root.render(
<React.StrictMode>
<App />
<React.StrictMode>
)
src/App.js
function App() {
return <div className="font-bold text-center p-4 text-[23px] bg-slate-600 text-lime-300">Hello, Black Lobster!</div>
}
export default App
마지막으로 Render를 해주는 App 컴포넌트에서 Tailwind CSS가 잘 연결됐는지 테스트를 해본다
사용법! className 안에 Tailwind 문법을 넣어주면 된다.
text-[23px] 대괄호의 의미 : 대괄호를 이용하여 내가 직접 커스텀하게 사용할 수 있다.
'CodeStates > React' 카테고리의 다른 글
Section4 / Unit3 : useMemo, useCallback (0) | 2023.07.20 |
---|---|
Section4 / Unit3 : Component와 Hook (0) | 2023.07.19 |
Section3 / Unit 4 : Redux (0) | 2023.06.22 |
Section3 / Unit4 : 상태 관리, props drilling (0) | 2023.06.20 |
Section3 / Unit3 : React Custom Component 과제 (0) | 2023.06.19 |