-
Notifications
You must be signed in to change notification settings - Fork 7
[3주차] 고은 미션 제출합니다. #4
base: master
Are you sure you want to change the base?
Changes from 2 commits
0bc3e51
086863f
66f470a
7ed4324
ae509f6
17258a2
6b8ec7d
3b08979
9134d24
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -4,7 +4,7 @@ import axios from 'axios'; | |||||||||||||||||||
import styled from 'styled-components'; | ||||||||||||||||||||
|
||||||||||||||||||||
function VoteForm() { | ||||||||||||||||||||
const [candi, setCandi] = useState([]); | ||||||||||||||||||||
const [candidates, setCandidates] = useState([]); | ||||||||||||||||||||
const [voteCount, setVoteCount] = useState(); | ||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 state가 사용되지 않고 있어요!, vote시 paramter로 넘겨줄 필요가 없기 때문에 지워주시면 될 것 같아요!
Suggested change
|
||||||||||||||||||||
|
||||||||||||||||||||
useEffect(() => { | ||||||||||||||||||||
|
@@ -13,45 +13,42 @@ function VoteForm() { | |||||||||||||||||||
|
||||||||||||||||||||
const getCandidates = async () => { | ||||||||||||||||||||
await axios | ||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
이렇게 바꿔줘도 의미가 같습니다! axios가 비동기 함수이기 때문이죠 |
||||||||||||||||||||
.get(process.env.API_HOST + '/candidates/', candi) | ||||||||||||||||||||
.get(process.env.API_HOST + '/candidates/', candidates) | ||||||||||||||||||||
.then(({ data }) => { | ||||||||||||||||||||
setCandi(data); | ||||||||||||||||||||
setCandidates(data); | ||||||||||||||||||||
}) | ||||||||||||||||||||
.catch(function (error) { | ||||||||||||||||||||
.catch((error) => { | ||||||||||||||||||||
console.log(error); | ||||||||||||||||||||
}); | ||||||||||||||||||||
}; | ||||||||||||||||||||
|
||||||||||||||||||||
const voteCandidates = async (person) => { | ||||||||||||||||||||
const newUrl = | ||||||||||||||||||||
process.env.API_HOST + '/candidates/' + person._id + '/vote/'; | ||||||||||||||||||||
const voteCandidates = async (candidate) => { | ||||||||||||||||||||
const newUrl = `${process.env.API_HOST}/candidates/${candidate._id}/vote/`; | ||||||||||||||||||||
await axios | ||||||||||||||||||||
.put(newUrl, voteCount) | ||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
request body schema가 명시되지 않은 경우, 안 넘겨주셔도 됩니다! |
||||||||||||||||||||
.then(({ data }) => { | ||||||||||||||||||||
setVoteCount(data); | ||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
삭제해주시면 됩니다 ㅎㅎ |
||||||||||||||||||||
alert(person.name + '님에게 투표 완료!'); | ||||||||||||||||||||
alert(candidate.name + '님에게 투표 완료!'); | ||||||||||||||||||||
getCandidates(); | ||||||||||||||||||||
}) | ||||||||||||||||||||
.catch(function (error) { | ||||||||||||||||||||
console.log(error); | ||||||||||||||||||||
alert('투표 실패!'); | ||||||||||||||||||||
}); | ||||||||||||||||||||
}; | ||||||||||||||||||||
let i = 1; | ||||||||||||||||||||
|
||||||||||||||||||||
return ( | ||||||||||||||||||||
<Wrapper> | ||||||||||||||||||||
<Title> | ||||||||||||||||||||
<RedTitle>프론트엔드 인기쟁이</RedTitle>는 누구? | ||||||||||||||||||||
</Title> | ||||||||||||||||||||
<SubTitle>CEOS 프론트엔드 개발자 인기 순위 및 투표 창입니다.</SubTitle> | ||||||||||||||||||||
<VoteArea> | ||||||||||||||||||||
{candi | ||||||||||||||||||||
.sort((person1, person2) => { | ||||||||||||||||||||
return person2.voteCount - person1.voteCount; | ||||||||||||||||||||
}) | ||||||||||||||||||||
.map((person) => ( | ||||||||||||||||||||
<Row key={JSON.stringify(person)}> | ||||||||||||||||||||
<Rank>{i++}위:</Rank> | ||||||||||||||||||||
{candidates | ||||||||||||||||||||
.sort((person1, person2) => person2.voteCount - person1.voteCount) | ||||||||||||||||||||
.map((person, index) => ( | ||||||||||||||||||||
<Row key={person._id}> | ||||||||||||||||||||
<Rank>{index + 1}위:</Rank> | ||||||||||||||||||||
<CandiName> | ||||||||||||||||||||
{person.name} | ||||||||||||||||||||
<br />[{person.voteCount}표] | ||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. candidate-card.js 이름으로 새 파일을 만들어서, CandidateCard라는 새로운 컴포넌트 작성한 뒤에
Suggested change
|
||||||||||||||||||||
|
@@ -63,10 +60,7 @@ function VoteForm() { | |||||||||||||||||||
</Wrapper> | ||||||||||||||||||||
); | ||||||||||||||||||||
} | ||||||||||||||||||||
export default React.memo( | ||||||||||||||||||||
VoteForm, | ||||||||||||||||||||
(prev, next) => prev.voteCount === next.voteCount | ||||||||||||||||||||
); | ||||||||||||||||||||
export default React.memo(VoteForm); | ||||||||||||||||||||
const Row = styled.div` | ||||||||||||||||||||
display: flex; | ||||||||||||||||||||
flex-direction: row; | ||||||||||||||||||||
|
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.
VoteForm이 LoginForm 내부에 있네요 😅
분리해주세요!