Conversation
리드미에 현재 실행 방법을 작성해주셨는데, 해당 명령어를 실행하면 오류가 발생합니다. 실제 면접관이 하나하나 실행해보진 않겠지만 코드만 봐도 제대로 실행되지 않는다는 것을 알 수 있기 때문에 수정해주세요! 코드에 관한 피드백은 코드에 추가해두겠습니다! |
감사합니다! 피드백 내용을 토대로 코드를 수정해보겠습니다. 😀 |
| import Article from '../Article/Article'; | ||
|
|
||
| export default function Main() { | ||
| const [navState, setNavState] = useState({ current: 'true', due: 'false', boxOffice: 'false' }); |
There was a problem hiding this comment.
navState를 객체로 이용하고 계시는데, current / due / boxOffice 값을 주는게 더 간단할 것 같아요.
onClick 이벤트에서 그냥 값으로 변경해도 되지만, button의 name 값을 지정하고, 이벤트 객체를 이용해서 값을 변경하시는 것도 좋습니다. <- 추가적인 사항이니 어려우시면 값으로 지정하셔도 됩니다.
| <li> | ||
| <h2> | ||
| <button | ||
| className={`navTitle ${navState.current ? 'true' : 'false'}`} |
There was a problem hiding this comment.
navState 객체의 값이 true / false에 따라 활성화될 클래스를 설정하고 계시는데 true / false 보다는 명확한 클래스명을 사용해주시면 좋을 것 같습니다. false에 따로 스타일이 없다면 ? 'ture': '' 이렇게 작성해주셔도 됩니다.
|
|
||
| return ( | ||
| <article className='cardArticle'> | ||
| {movieData?.map((data) => { |
There was a problem hiding this comment.
데이터가 정적으로 들어오기 때문에 데이터가 없는 경우가 고려되어 있지 않는데, 통신으로 받아오는 프로젝트는 값이 비어있을 경우가 있기 때문에 레이아웃이 깨지지 않게 설정해주시거나 데이터가 없다는 것을 알 수 있도록 구현해주시면 더 좋을 것 같아요!
There was a problem hiding this comment.
Warning: Each child in a list should have a unique "key" prop.
Key는 React가 어떤 항목을 변경, 추가 또는 삭제할지 식별하는 것을 돕습니다. key는 엘리먼트에 안정적인 고유성을 부여하기 위해 배열 내부의 엘리먼트에 지정해야 합니다.
| return ( | ||
| <section className='card'> | ||
| <div className='textGroup'> | ||
| <img className='poster' alt='poster' src={require(`${data.image}`)}></img> |
There was a problem hiding this comment.
img의 alt 속성은 h3 태그로 영화의 제목 정보를 주고 있기 때문에 비워두셔도 괜찮을 것 같습니다.
YennieJ
left a comment
There was a problem hiding this comment.
rem을 사용하셨군요..! 고생하셨습니다👍
1.반응형
- Main.jsx +30 (headline의 뜻은 제목,표제 이런 느낌이라서 이름을 변경하는게 좋을것 같아요 )
- Footer.jsx 전체
위 두개 width 변경을 고려해보시면 좋을꺼같습니다.
화면이 작아지면 scroll이 생겨요 :)
변경 하시면 mediaQuery도 width값으로 설정 가능할것 같습니다
- font 설정이 안되어있어요!
font-style,line-height등 기본 설정인것은 작성하지 않아도 될거같습니다:) - Article.jsx 평점 옆에 별 이미지가 빠졌어요 :)
| <header className='mainHeader'> | ||
| <h1 className='mainTitle'>정글 시네마 영화 목록</h1> | ||
| <img src={headLine} alt='headLine' /> | ||
| </header> |
There was a problem hiding this comment.
header 안에 nav가 들어가도 될거같아요 :)
|
|
||
| const handleNavState = (state) => { | ||
| setNavState({ current: state === 'current', due: state === 'due', boxOffice: state === 'boxOffice' }); | ||
| console.log(navState); |
There was a problem hiding this comment.
사용하지 않는 console은 삭제하는게 좋을것 같습니다 :)
|
|
||
| return ( | ||
| <article className='cardArticle'> | ||
| {movieData?.map((data) => { |
There was a problem hiding this comment.
Warning: Each child in a list should have a unique "key" prop.
Key는 React가 어떤 항목을 변경, 추가 또는 삭제할지 식별하는 것을 돕습니다. key는 엘리먼트에 안정적인 고유성을 부여하기 위해 배열 내부의 엘리먼트에 지정해야 합니다.
| gap: 2rem 1.44rem; | ||
|
|
||
| justify-content: center; | ||
| padding: 2rem 0; |
There was a problem hiding this comment.
화면이 작아질때 border끼리 겹쳐져서 양 옆에도 padding이 들어갔으면 좋겠어요!
| <img className='poster' alt='poster' src={require(`${data.image}`)}></img> | ||
| <h3 className='title'>{data.title}</h3> | ||
| <ol className='info'> | ||
| <div className='subjectGroup'> |
| .footerSVG:hover { | ||
| transform: scale(1.3); | ||
| } |
There was a problem hiding this comment.
👍👍
trasition도 사용해보면 더 멋있을거 같아요
💡 프로젝트 실행 방법
📌 배포 링크
http://junglecinema.s3-website-us-east-1.amazonaws.com/
📜 폴더 구조
🚀 추가 기능 구현
🙋♀️ 중점적으로 리뷰 받고 싶은 내용