1. Header에서 달을 이동시키자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
import React from "react";
import { Header, Calendar } from '../components';
import moment from "moment";
import styled from "styled-components";
function FullCalendar() {
const [calendarYM , setCalendarYM] = React.useState(moment());
const [today , setToday] = React.useState(moment().format("현재 YYYY - MM - DD"));
const moveMonth = (month)=>{
setCalendarYM(calendarYM.add(month,"M"));
// console.log(calendarYM.format("YYYY년 - MM월 DD일"))
}
return (
<Layout >
<Container>
<Header
calendarYM = {calendarYM}
today= {today}
moveMonth ={moveMonth}
/>
<Calendar/>
</Container>
</Layout>
);
}
const Layout = styled.div`
width: 100vw;
height: 80vh;
border: 1px solid black;
`;
const Container = styled.div`
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
`;
export default FullCalendar;
|
cs |
pages/FullCalendar
FullCalendar에서 moveMonth라는 함수를 만들어서 Header에 넘긴다.
moment에서 month를 받아서 add해주는 것이다.
components/Header.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
import React from "react";
import {Text, Button} from "../elements"
import styled from "styled-components";
import moment from "moment";
const Header = (props) =>{
const { calendarYM, today, moveMonth} = props;
const [text, setText] = React.useState(calendarYM.format("YYYY년 MM월"));
return(
<React.Fragment>
<Container>
<Text>{text}</Text>
<Text>{today}</Text>
<div>
<Button
_onClick={()=> {
moveMonth(-1);
setText(calendarYM.format("YYYY년 MM월"));
}}
text="<">
</Button>
<Button
_onClick={()=> {
moveMonth(1);
setText(calendarYM.format("YYYY년 MM월"));
}}
text=">">
</Button>
</div>
</Container>
</React.Fragment>
);
}
const Container = styled.div`
flex-basis: 50px;
background-color: tomato;
display:flex;
justify-content: space-between;
`;
export default Header;
|
cs |
Header에서 props로 받아오고 text를 useState로 관리한다.
버튼 클릭할때마다 moveMonth에 -1과 1을 더해준다.
<를 클릭하면 2021년 6월 이런식으로 앞으로 가고
>를 클릭하면 2021년 8월 .. 로 뒤로간다.
2. 요일 써주기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import React from "react";
import styled from "styled-components";
const DateHeader = (props) =>{
const dates = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
return(
<React.Fragment>
<Container>
{dates.map((date, idx)=>{
return(
<WeekName
key = {idx}
>
{date}
</WeekName>
)
})}
</Container>
</React.Fragment>
)
}
const Container = styled.div`
display: flex;
justify-content: space-between;
`;
const WeekName = styled.div`
margin: 0 auto;
background-color : skyblue;
display:block;
width: 100%;
text-align:center;
`;
export default DateHeader;
|
cs |
components/DateHeader.js
이렇게 요일도 써주었다.
728x90
'WEB > REACT' 카테고리의 다른 글
[REACT] 리액트 심화반 강의 프로젝트 만들기 순서를 알려주겠다(2) (0) | 2021.07.06 |
---|---|
[REACT] 리액트 심화반 강의 프로젝트 만들기 순서를 알려주겠다. (0) | 2021.07.06 |
[REACT] React로 캘린더 만들기 (1) - Header에서 현재 날짜와 달을 표시하기 (0) | 2021.07.05 |
[REACT] 컴포넌트 쪼개기/ 포스트 보이는 메인페이지 만들기 / 최소단위 컴포넌트 만들기 / Grid와 이미지 컴포넌트 (2) (0) | 2021.07.02 |
[REACT] 컴포넌트 쪼개기/ 포스트 보이는 메인페이지 만들기 / 가장 큰 단위, 중간단위 (1) (0) | 2021.07.02 |