-
Notifications
You must be signed in to change notification settings - Fork 2
WEEK 3 팀 회의록
eVe68 edited this page Aug 24, 2024
·
2 revisions
- git merge 과정에서 문제 발생
- 머지 과정에서 변경사항이 모두 날라가고 merge되었지만 diff를 잡아주지 못함
- 수동으로 해결
- 이벤트1
- 이벤트2
- 이벤트1 결과
- 이벤트2 결과
- 메인 페이지의 이벤트 참여 섹션
- state나 props가 아닌 context사용 시 어떻게 해야 하는지
- Mock Provider, Decorator 사용
decorators: [
(Story: StoryFn, context: StoryContext) => {
const { args } = context;
const initialValues = {
isAuth: args.isAuth ?? false,
isRandomEnd: args.isRandomEnd ?? false,
};
return (
<MockAppProvider values={initialValues}>
<AppProvider>
<Story {...context} />
</AppProvider>
</MockAppProvider>
);
},
],
- Mock Provider 안에 App Provider 사용한 이유
- App Provider의 구조가 App Context 가 null이면 오류를 throw하기 때문
- Story가 App Context 를 사용하고 있기 때문에 App Provider로 감싸주지 않으면 안됨
- 자주 사용하는 애니메이션 훅에 대한 고민
import React, { useRef } from "react";
interface UseAnimationProps {
startKeyframes: Keyframe[];
cancelKeyframes: Keyframe[];
options: KeyframeAnimationOptions;
}
const useAnimation = ({
startKeyframes,
cancelKeyframes,
options,
}: UseAnimationProps) => {
const elementRef = useRef<HTMLDivElement | null>(null);
const animationRef = useRef<Animation | null>(null);
const startAnimation = () => {
if (elementRef.current) {
animationRef.current = elementRef.current.animate(
startKeyframes,
options,
);
}
};
const stopAnimation = () => {
if (animationRef.current && elementRef.current) {
animationRef.current = elementRef.current.animate(
cancelKeyframes,
options,
);
}
};
return { elementRef, animationRef, startAnimation, stopAnimation };
};
export default useAnimation;
- 화면 비율 문제
- 비율만 맞추고 모든 화면에서 비슷한 레이아웃으로 보일 수 있도록 조정
- 애니메이션 후, 요소가 사라지거나 나타나면 기존 요소의 위치가 달라지면서 애니메이션이 부자연스러워지는 현상
- 모든 요소에 absolute를 주어서 해결
- 컨테이너 변화에 의한 내부 요소 위치 변화에 애니메이션을 주는 방법
- 없는 듯
- 움직이고자 하는 요소에 absolute부여 후 일반적인 애니메이션으로 구현
- act로 감싸지 않았다는 에러
- 학습 진행 예정
- 버튼을 누를 때마다 토스트가 갱신되었으면 함
- 갱신된 토스트는 4초뒤 페이드 아웃
- 페이드 아웃 한 뒤 html요소에서 제거
- opacity를 이용한 속임수는 쓰고 싶지 않음
- Key 값을 계속 변경하여 리랜덜링을 계속하는 방식 선택
- 토스트 컴포넌트가 간단해 성능에 영향이 미미할 것이라 예상
const [toastKey, setToastKey] = useState(0);
const onClickHandler = () => {
if (expectation.length < 20) setError("short");
setToastKey((current) => current + 1);
};
<Toast
key={toastKey}
content={ERROR_MSG[`${error}`]}
position="bottom"
value={4}
delay={4000}
duration={1000}
/>;
- glow가 어떻게 움직이는 건지?
- 안움직여오 될듯
- border gradient 구현 문제
- 보류
- 전체화면, 최대화면, fn f 화면 세가지 모두 다름? 어떤걸로?
- 전체화면에 맞추기, 본인인증하고 이벤트 참여하기 버튼 h 줄여도 될듯
- 기대평 작성 후, 사용자에게 알려주는 모달?
- 4B7C83이 색깔로 토스트 띄우기
- 인증 모달 토스트 생기면 위 요소가 위로 밀리는 것이 맞는지?
- 인증하기 버튼 밑으로 가기
- 컴포넌트에 ref를 전달할 때 필요
- CORS 이슈로 완료하지 못함
- 모달, 이벤트 선택 페이지 구현
"scripts": {
"start": "webpack-dev-server --hot --config webpack.dev.js",
"msw": "webpack-dev-server --hot --config webpack.dev.js --env MSW",
},
- 환경변수를 받아오기 위해 webpack의 module.exports를 객체형에서 함수형으로 변경
- 둘은 같은 객체를 call by reference로 가르킨다. return되는 값은 항상 module.exports로, 만약 exports에 객체를 할당하게 되면, module,exports와 달라지므로 항상 프로퍼티로 할당해주어야 한다.
- [자바스크립트] module.export, exports
- Snap
- 부모요소에 flex주면 자식 요소들의 크기가 망가짐
- 디렉토리 정리
- 적절한 위치에 적절한 파일
- 네이밍
- 파일 이름 일관성 유지
- 예상 가능한 이름 사용
- 페이드 인 은 잘 되는데 페이드 아웃이 잘 안되는 이슈
- useAnimation Custom hook으로 페이드 인 애니메이션을 줌
- tailwind keyframs를 이용하여 페이드 아웃 애니메이션을 줌
- 이렇게 되면 서로 opacity를 다른 곳에서 접근하기 때문에 충돌이 일어나는 것으로 추정
- useAnimation Hook을 변형해서 해결함
const stopAnimation = () => {
if (animationRef.current && elementRef.current) {
animationRef.current = elementRef.current.animate(
cancelKeyframes,
cancelOptions ?? options,
);
}
};
- 🛠️ 테스트 코드 작성
- 워드 클라우드
- 컴포넌트 설계
- 스토리북 적용
- useAnimation Hook
- 룰렛 컴포넌트
- 토스트 컴포넌트
- useInView Hook
- 색상 영역 컴포넌트
- msw
- webpack
- 컴포넌트 동시에 띄우기