일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 팀워크최고
- 항해99
- 알pdf #파일탐색기미리보기안될때
- 프론트엔드
- Programmers
- NotionAI
- 멍친구
- TS
- 프로그래머스
- 7기
- REACT
- 챗GPT
- ReactNative
- rn
- D반8조
- 스파르타코딩클럽
- 달리기반
- 코린이
- TDD
- 실전프로젝트
- 알고리즘기초주차
- Expo
- 필수강의
- Ai
- 웹개발종합반
- 리액트
- 맥린이
- typeScript
- 사전준비
- ChatGPT
- Today
- Total
FrontEnd :-)
WIL 10 본문
항해99 64일차 | 2022. 7. 11.(월) | 실전프로젝트 (프론트2+백3+디자이너1 협업) | D반 - 실전프로젝트 8조(6명), 중간발표 발제(10시), 오전 팀 회의, 버튼 컴포넌트 생성 등 JS 스터디 |
항해99 65일차 | 2022. 7. 12.(화) | 실전프로젝트 (프론트2+백3+디자이너1 협업) | D반 - 실전프로젝트 8조(6명), 이번주 1차 프+백 통합테스트(저녁 이후) JS 스터디 |
항해99 66일차 | 2022. 7. 13.(수) | 실전프로젝트 (프론트2+백3+디자이너1 협업) | D반 - 실전프로젝트 8조(6명), 중간발표 자료 준비(FE) JS 스터디 |
항해99 67일차 | 2022. 7. 14.(목) | 실전프로젝트 (프론트2+백3+디자이너1 협업) | D반 - 실전프로젝트 8조(6명), JS 스터디 |
항해99 68일차 | 2022. 7. 15.(금) | 실전프로젝트 (프론트2+백3+디자이너1 협업) | D반 - 실전프로젝트 8조(6명), 이번주 2차 프+백 통합테스트(아침부터 하루 종일) |
항해99 69일차 | 2022. 7. 16.(토) | 실전프로젝트 (프론트2+백3+디자이너1 협업) | D반 - 실전프로젝트 8조(6명), MVP 중간발표 |
항해99 70일차 | 2022. 7. 17.(일) | Weekly I Learned 작성, 산책, 과제 | D반 - 실전프로젝트 8조(6명), 웹소켓 |
MVP개발을 하는 3주 동안 어떤 기술들을 다뤄봤는지 정리해보세요.
1. 모달창 관련 (모달창 처음 구현했는데, 많이 필요했고, 아직 더 남았다..)
>기능
모달창 컴포넌트 만들어서,
props, css 등을 설정하고
const { open, close, children } = props;
<div className={open ? "openModalcss" : null}>
{open ? (
<div className="Reviewmodal">
<ModalTitle>{children}</ModalTitle>
모달창 띄울 페이지에서, useState로 여닫기
//신청하기 모달창 여닫기
const [applyModal, setApplyModal] = useState(false);
const openApplyModal = () => {
setApplyModal(true);
};
const closeApplyModal = () => {
setApplyModal(false);
};
<div style={{ display: "flex", justifyContent: "center" }}>
<Button
orange_small
margin="0 0 4.9em 0"
_onClick={() => {
openApplyModal();
}}
>
신청하기
</Button>
<WriteModal
children="신청하기"
open={applyModal}
close={closeApplyModal}
/>
>CSS
( 모달창 띄우고 뒷 배경은 어둡게 하는 css 설정.... 모달창 포지션을 fixed로 해놨는데,,, 모달창 크기가 작지 않아서 CSS를 어떻게 변경할지 고민 중이고, 이왕이면 모달창이 드래그로 이동되면 좋겠다...... 찾아 볼 예정..)
.openModalcss {
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
background: rgba(0, 0, 0, 0.8);
z-index: 2;
}
.modal {
position: absolute;
top: calc(50vh - 350px);
left: calc(50vw - 350px);
background-color: #fff;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
border-radius: 24px;
width: 100%;
max-width: 640px;
height: 645px;
}
2. 회원가입, 로그인 관련 (이 부분은 매번 쉽지 않다, 보완점이 계속 생긴달까, 인증 이거 쉬운 거 아니다)
>기능
SPRING과의 협업 중이라, JWT 방식으로 회원가입/로그인 구현.
현재는 access 토큰을 로컬스토리지에 저장하는 단계이고, 이제, 리프레시 토큰으로 엑세스 토큰 만료 후 유효성검사해서 토큰 다시 받아오고 어찌고 를 구현할 예정이다.
코드 등은 나중에 따로 정리해야겠다..
3. CI/CD 구축 관련 (배포 환경에서 테스트할 때 매우 편리하다)
https://writingcode.tistory.com/79
4. 이미지 보내기, 이미지 슬라이더 관련
#이미지formdata
이미지 업로드 부분을 다른 컴포넌트로 분리시켜서, 리덕스에 이미지 저장하고 그걸 다시 상세페이지로 불러온 후 폼데이터에 담아, 다른 콘텐츠와 함께 서버로 보냈다.
// 데이터 formData로 보내기
const addReview = async () => {
const formData = new FormData();
image.forEach((image) => formData.append("image", image));
dispatch(DB(formData));
};
#이미지슬라이더 (패키지 사용 안하고)
//이미지 슬라이더
const [slide, setSlide] = useState(1);
const moveDot = (index) => {
setSlide(index);
};
<div className="imgBox">
{reviewDetail.reviewImgList?.map((image, index) => {
return (
<>
<div
key={image.id}
className={
slide === index + 1 ? "slide active-anim" : "slide"
}
>
<img src={image} alt="reviewImages" />
</div>
<div className="containerDots">
{Array.from({
length: reviewDetail.reviewImgList.length,
}).map((item, index) => (
<div
key={index}
onClick={() => moveDot(index + 1)}
className={
slide === index + 1 ? "dot active" : "dot"
}
></div>
))}
</div>
</>
);
})}
</div>
CSS 설정이 중요한데,
.imgBox {
display: flex;
width: 560px;
}
.slide {
width: 100%;
height: 100%;
position: absolute;
top: 150px;
opacity: 0;
transition: opacity ease-in-out 0.4s;
}
.slide img {
width: 560px;
height: 350px;
object-fit: cover;
}
.active-anim {
opacity: 1; /* 불투명도 0~1 */
}
.containerDots {
position: absolute;
bottom: 245px;
left: 50%;
transform: translateX(-50%);
display: flex;
}
.dot {
width: 10px;
height: 10px;
border-radius: 50%;
margin: 0 5px;
background: #f1f1f1;
}
.dot.active {
background: #fa5a30;
}
5. 글씨 구부려 회전시키기 애니매이션 관련
https://writingcode.tistory.com/81
+웹소켓통신 기능 구현 중
'항해99_7기 > WIL' 카테고리의 다른 글
WIL 11, 12 (0) | 2022.07.25 |
---|---|
WIL 9 (0) | 2022.07.10 |
WIL8 (0) | 2022.07.04 |
WIL7 (1) | 2022.06.26 |
[TIL] CI/CD (0) | 2022.06.24 |