-
Notifications
You must be signed in to change notification settings - Fork 10
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
[2주차] 오예린 미션 제출합니다. #7
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
안녕하세요 코드리뷰 파트너 김문기입니다 😃
코드가 너무 깔끔하고, 특히 함수 정의 부분이 이유가 명확한 callback함수와 적절한 useRef의 사용하신걸보고 많이 배웠습니다. 코드 리뷰 하면서도 새로운 지식을 많이 얻은 것 같아요 👍
과제하느라 고생 많으셨구 내일 스터디때 뵙겠습니다 🙇
display: flex; | ||
flex-direction: row; | ||
padding: 5px; | ||
height: 30vh; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
헛 그렇군요! 이 부분 수정하면 좋을 것 같아요 알려주셔서 감사합니다!😄
<Button onClick={() => onCheck(id)}> | ||
{checked ? <BsPatchCheckFill /> : <BsPatchCheck/>} | ||
</Button> | ||
<div className="text">{text}</div> | ||
<Button onClick={() => onDelete(id)}> | ||
<BsEraserFill/> | ||
</Button> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이부분은 개인 취향차이가 조금 있을 것 같은데, 코드만 봐서는 어떤 버튼인지 잘 알기 힘든점이 있을 수도 있어서
<Button>
태그에 어떤 버튼인지 유추할 수 있는 props를 넘겨주거나, 주석을 통해 어떤 버튼인지 적어주시면 협업을 할 때 서로에게 도움이 될 수 있을 것 같아요!
Button 태그를 만들어서 재사용성을 높인 부분이 좋은것 같습니다!!
return ( | ||
<Item> | ||
<Button onClick={() => onCheck(id)}> | ||
{checked ? <BsPatchCheckFill /> : <BsPatchCheck/>} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
react-icons 저도 자주 쓰곤 하는데 간단하게 사용할 수 있는 좋은 라이브러리인것같아요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이번에 처음 써보았는데 정말 쉽게 쓸 수 있더라구요!:) 간단해서 좋았던 것 같습니다 ㅎㅎ
@@ -0,0 +1,50 @@ | |||
import React, { useCallback, useState } from "react"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
React 17 부터는 import React from 'react';
를 더이상 적지 않아도 된다고 하더라구요! 참고링크 그 전에 습관이 들어서 저도 무의식적으로 적었었는데, 오히려 적지 않는 것이 더 도움이 된다고 해서 저도 요즘에는 빼고 적으려고 노력하구있어요!
import React, { useCallback, useState } from "react"; | |
import { useCallback, useState } from "react"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
헉 저도 이건 몰랐네요!!! 좋은 정보 감사합니당👏🏻👏🏻
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아하 그렇군요!! 다음부터는 그렇게 해보아야겠어요! 꿀팁 정말 감사합니다 문기님👍👍
const Form = styled.form` | ||
width: 100%; | ||
display: flex; | ||
flex-direction: column; | ||
`; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
form형식으로 받아서 submit control을 잘 하신것 같습니다!
const onChange = useCallback((e) => { | ||
setValue(e.target.value); | ||
}, []); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
제가 아직 useCallback에 익숙하지 않아서 사용하지 않았는데, 엄청 자연스럽게 잘 사용하시는 것 같아 부럽습니다 ㅠㅜ 멋져요 👍
${({ type }) => | ||
type == "done" && | ||
css` | ||
text-decoration: line-through; | ||
`} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이부분은 아래와 같이 바꾸면 좀 더 깔끔할 것 같아요
${({ type }) => | |
type == "done" && | |
css` | |
text-decoration: line-through; | |
`} | |
text-decoration: ${(props) => props.type === 'done' ?? 'line-through' : 'none'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오오.. 이 부분은 다른 레퍼런스를 참고해서 작성했던 코드였는데, 더 깔끔하게 써볼 수는 없을까 많이 고민했던 부분이었습니다! 문기님 말씀대로 수정을 한다면 너무 깔끔해지겠네요 이렇게 수정해봐야겠어요! 감사합니다:D
문기님 코드에서도 봤지만 props
너무 깔끔하게 잘 쓰시네요 최고입니다😄
const nextId = useRef(3); | ||
const onInsert = useCallback( | ||
(text) => { | ||
const todo = { | ||
id: nextId.current, | ||
text, | ||
checked: false, | ||
}; | ||
setToDos(toDos.concat(todo)); //toDos에 todo 추가! | ||
nextId.current++; //nextId 1씩 더하기 | ||
}, | ||
[toDos] | ||
); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
useRef를 활용하여 Insert함수를 작성하신 부분이 인상적이네요. 한번도 작성해본적 없는 형식의 코드인데 이 방법 되게 좋은것같아요!
concat함수의 연산속도가 push나 ...(spread) 연산자에 비해 많은 속도 차이가 난다고 알고 있어요. 이 부분은 아래와 같이 바꾸면 좀 더 좋을 것 같아요! 참고자료
const nextId = useRef(3); | |
const onInsert = useCallback( | |
(text) => { | |
const todo = { | |
id: nextId.current, | |
text, | |
checked: false, | |
}; | |
setToDos(toDos.concat(todo)); //toDos에 todo 추가! | |
nextId.current++; //nextId 1씩 더하기 | |
}, | |
[toDos] | |
); | |
const nextId = useRef(3); | |
const onInsert = useCallback( | |
(text) => { | |
const todo = { | |
id: nextId.current, | |
text, | |
checked: false, | |
}; | |
setToDos([...toDos, todo]) | |
nextId.current++; //nextId 1씩 더하기 | |
}, | |
[toDos] | |
); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오오 참고자료까지 너무 감사합니다!👍 속도 면에서 차이가 나는 줄은 몰랐네요!
setToDos( | ||
toDos && toDos.map((todo) => | ||
todo.id === id ? { ...todo, checked: !todo.checked } : todo |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
조건부 삼항 연산자를 사용해서 onFinish함수를 매우 깔끔하게 작성하신것 같아 인상깊었습니다...!
배포 링크: (https://react-todo-17th-real-final.vercel.app/)
안녕하세요, 오예린입니다!🤗
2주차 과제도 무사히(..?!) 끝내게 되었네요!
사실 리액트에 입문을 한지 얼마 되지 않았기에.. 뚱땅 뚱땅 코드를 짜긴 했지만 스스로 발전할 부분이 참 많다는 걸 느꼈던 과제였습니다. 그래도 지난주보다는 조금은 성장한 것 같기도 하네요😭 매주.. 공부를 하게 해주는 세오스 짱..
혹시 코드 보시다가 이 부분은 고쳤으면 좋겠다 라고 생각이 드시는 부분이 있다면 가감 없이 말씀해주세요! 너무 환영입니다🔥
아쉬운 점
추가한 점
저번에 코드 리뷰 해주신 부분들도 고쳐보려 했습니다. 특히 저번 과제에서는 할 일들을 추가할 때 리스트를 넘어가 버리는 문제가 있었는데, 이를 해결 했습니다:)
Key Questions
앞으로도 화이팅입니다🔥