Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[장아영] Sprint 10 #270

Conversation

yellowjang
Copy link
Collaborator

@yellowjang yellowjang commented Jul 20, 2024

요구사항

기본

  • 게시글 등록 페이지 주소는 “/addboard” 입니다.
  • 게시판 이미지는 최대 한개 업로드가 가능합니다.
  • 각 input의 placeholder 값을 정확히 입력해주세요.
  • 이미지를 제외하고 input 에 모든 값을 입력하면 ‘등록' 버튼이 활성화 됩니다.
  • 게시글 상세 페이지 주소는 “/board/{id}” 입니다.
  • 댓글 input 값을 입력하면 ‘등록' 버튼이 활성화 됩니다.
  • 자유게시판 페이지에서 게시글을 누르면 게시물 상세 페이지로 이동합니다.

심화

  • [x]
  • []

주요 변경사항

스크린샷

image

멘토에게

  • 아직 미미미미 완성입니다 ㅠㅠ
  • 셀프 코드 리뷰를 통해 질문 이어가겠습니다.

@yellowjang yellowjang added 미완성🫠 죄송합니다.. 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. labels Jul 20, 2024
Comment on lines +9 to +10
const [preview, setPreview] = useState();
const [value, setValue] = useState();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

useState에 초기값을 넣어주지않는다면 자동으로 undefined가 들어갑니다! 그러면 state의 type도 undefined가 되어요!

원시값이면 type을 선언해줄 필요까지는 없지만 초기값을 넣어줘어야한답니다! 아니면 | null도 하나의 방법이겠구요!

@@ -0,0 +1,137 @@
import styles from "./styles.module.scss";
import plusIcon from "@/assets/icons/ic_plus.png";
import { ST } from "next/dist/shared/lib/utils";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이건 안쓰이고 있는것같아요!

Comment on lines +17 to +27
const handleInput = (e) => {
setFormState({
...formState,
[e.target.name]: e.target.value,
});
};

const handleChange = (e) => {
const nextValue = e.target.files[0];
setValue(nextValue);
};
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

각각의 event 타입도 선언을 해주면, 사용하는곳에서 조금 더 정확히 사용할 수 있습니다!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

addBoard 로 컴포넌트 이름을 바꿔주세요 😁
이 컴포넌트안에 너무 많은 컴포넌트들이 있는 것같아요!

파일 업로드를 할 수 있는 부분을 따로 뺀다면, 향후 어디서든 가져다 사용할 수 있고, 가독성도 늘어날 것 같습니다!

사실 파일업로드 뿐 아니라 기본 input이나 textArea도 제어컴포넌트와 함께 새로운 공용컴포넌트로 만들 수 있죠!

등록
</button>
</div>
<form>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아직 api가 없어서 그런것같지만 onSubmit에 대한 핸들러가 없네요!
그래도 버튼을 클릭하면 무언가 동작되는데 왜그런지는 혹시 아실까요?!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

실제 데이터를 받기전에 mock으로 만드신 것은 아주 좋은 방법입니다!
그런데 조금 더 실제 데이터를 받는것처럼 만들면 나중에 연결할 때 더 편해요!

예를들어 상수로 const MOCK_DATA = {value: '혹시 사용기간이 어떻게 되실까요?'; time: 1}이런식으로 해두고 사용ㅇ하는곳에서는 MOCK_DATA.value나 MOCK_DTA.time 이런식으로요. 혹은 props를 받게해서 부모에서 내려줄수도있구요!

Comment on lines +73 to +75
<Comment />
<Comment />
<Comment />
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기서 여러번 사용될것을 생각하면 아가 Comment컴포넌트에 남긴 코멘트에서 props를 받게하고 여기서 mock데이터 배열로 만들어서 map을 만드는게 나아보이는군요!

@@ -16,7 +16,10 @@ export default function BestPosts() {
const [posts, setPosts] = useState<Post[]>([]);
const [loading, setLoading] = useState(true);
const [pageSize, setPageSize] = useState(3);

const BREAKPOINTS = {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

상수화 아주 좋습니다👍

@lhc0506 lhc0506 merged commit 9daaa2c into codeit-bootcamp-frontend:Next-장아영 Jul 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 미완성🫠 죄송합니다..
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants