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

[4주차] 김선영 미션 제출합니다. #20

Open
wants to merge 42 commits into
base: master
Choose a base branch
from

Conversation

seondal
Copy link

@seondal seondal commented Nov 4, 2022

https://react-messanger-16th-ebon.vercel.app/


Routing

: 웹 애플리케이션에서 라우팅이라는 개념은 사용자가 요청한 URL에 따라 알맞는 페이지를 보여주는 것

  • 여러 페이지로 구성된 웹 애플리케이션을 만들 때 페이지별로 컴포넌트들을 분리해가면서 프로젝트를 관리하기 위해 필요

SPA

: 한 개의 페이지로 이루어진 애플리케이션

  • 뷰 렌더링을 사용자의 브라우저가 담당하도록 하고, 웹 애플리케이션을 브라우저에 불러와서 실행시킨 후에 사용자와의 인터랙션이 발생하면 필요한 부분만 자바스크립트를 사용하여 업데이트한다
  • 새로운 데이터가 필요하다면 서버 API를 호출하여 필요한 데이터만 새로 불러와 애플리케이션에서 사용
  • html은 한번만 받아와서 웹 애플리케이션을 실행시킨 후에 그 이후에는 필요한 데이터만 받아와서 화면에 업데이트
  • 브라우저의 History API를 사용하여 브라우저의 주소창의 값만 변경하고 기존에 페이지에 띄웠던 웹 애플리케이션을 그대로 유지하면서 라우팅 설정에 따라 또 다른 페이지를 보여줌

상태관리

  • props vs state
    • Props는 컴포넌트간 전달 되는 데이터
    • State는 컴포넌트 안에서 관리 되고 시간이 지나면서 바뀌는 동적인 데이터
  • 범위측면
    • 몇몇 컴포넌트에 국한되서 영향을 주는 지역 상태
    • 많은 컴포넌트에 영향을 주는 전역 상태
  • 역할측면
    • 어플리케이션의 인터렉티브한 부분을 컨트롤하는 UI 상태
    • 서버로부터 데이터를 가져와 캐싱 해놓는 서버 캐시 상태
    • Form의 로딩, Submitting, disabled, validation 등등 데이터를 다루는 Form 상태
    • 브라우저에 의해서 관리되고 새로고침해도 변함 없는 URL 상태

@seondal seondal changed the title [4주차] 김선영 과제 제출 [4주차] 김선영 미션 제출합니다. Nov 4, 2022
@jhj2713
Copy link
Member

jhj2713 commented Nov 5, 2022

안녕하세요, 프론트 파트장 주효정입니다🙌

항상 생각한 거지만 중첩 라우팅도 사용하시고 코드를 효율적으로 잘 짜시는 것 같아요! 그리고 Key Question에 대한 답도 너무 깔끔하게 잘 작성해주셨네요~!

한 가지 말씀드리고 싶은 점은 변수/함수를 선언할 때 컴포넌트 내에 있어야 하는 것과 컴포넌트 밖에 있어도 되는 것을 구분하는 것에 대해 학습해봐도 좋을 것 같아요. 예를 들어 Layout.tsx에서 activeStyle이나 normalStyle은 effect나 state의 영향을 받지 않아서 컴포넌트 바깥에 있어도 될 것 같죵

이번주도 수고 많으셨고 스터디 시간에 뵐게요🥳

Copy link

@ch9eri ch9eri left a comment

Choose a reason for hiding this comment

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

안녕하세요 이번주 코드리뷰 파트너 임채리입니다!
선영님 과제를 보면 항상 제가 생각하지 못했던 것들을 고려하신 흔적이 느껴져요!
항상 많은 걸 얻어갑니당🥰

src/App.tsx Outdated
<Route element={<Layout />}>
<Route path="/" element={<FriendPage />} />
<Route path="/chatrooms" element={<ChatroomPage />}>
<Route path=":id" element={<Chatroom />} />
Copy link

Choose a reason for hiding this comment

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

우왕 저도 중첩라우팅을 사용해봐야겠네요!!!!

onConcat(value);
setValue("");
// 엔터로 전송, shift+엔터로 줄바꿈
const handleEnter = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {
Copy link

Choose a reason for hiding this comment

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

우와 shift 엔터 줄바꿈 기능은 생각을 못했는데 ...! 이렇게 구현하는 것이군요!!!! 배워갑니당

Copy link

@AlmondBreez3 AlmondBreez3 left a comment

Choose a reason for hiding this comment

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

안녕하세요 선영님! 안아줘요 캐릭터가 너무 귀여워서 지난 과제부터 너무 기대됬는데 안워줘요 캐릭터들이 더 추가가되었네요 ㅎㅎ...
일단 recoil을 안쓰시고 오로지 배열을 활용하신 부분이 대단한것 같습니당...
저는 오히려 배열로 여러 상태를 처리하는 부분에서 막혀 가지고 recoil사용이 큰 도움이 됬습니다! recoil을 쓰지 않고 처리하시는 부분이 너무 깔끔해서 구현하신 코드들 보면서잘 배우고 갑니다!
이따 저희 스터디 때 뵈요 ㅎㅎ

src/App.tsx Outdated
const App = () => {
return (
<>
<GlobalStyle />

Choose a reason for hiding this comment

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

app.js에 routing을 하셨네용 전 index.tsx에서 해서 app.tsx에서 하는법을 알고 싶었는데 이 기회를 통해 보고 갑니다! globalstyle적용을 아직 안했는데 선영님은 하셨군요!

const roomMembers: User[] = [];
chatrooms[roomId].users.map((memberId) => roomMembers.push(users[memberId]));
if (!includeCurUser) {
roomMembers.shift();

Choose a reason for hiding this comment

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

배열 맨 앞에있는요소를 삭제하는게 shift라는것을 처음 알았어요! 다음에 코드 짤때 써먹어야 겠어용

curUser: number;
chats: Chat[];
users: User[];
}

Choose a reason for hiding this comment

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

interface선언 파일이 따로 있는데 여기다가 인터페이스를 선언한 이유가 따로 있으신가요???

if (value.length == 0) {
return;
}
e?.preventDefault(); // 버튼을 통한 제출이라면 새로고침 방지

Choose a reason for hiding this comment

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

저도 선영님이랑 비슷한 코드를 짯고 form에 onSubmit했는데 버튼을 통한 제출일때랑 그냥 엔터일때랑 구분을 안하고 짜도 제대로 작동하더라고요! 버튼을 누르면 새로고침이 되는 문제는 없었어요! 그런데 위에 handleEnter라는 함수를 선언하셔서 이런 예외처리가 필요해진건가요??

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants