게시글 등록, 회원등록 등과 같은 api요청을 하게 될때, 등록 버튼을 여러번 누르게 된다면 의도치 않은 api 요청이 중복되어 실행됩니다.
이번시간에는 이러한 api 중복 요청을 어떻게 해결하는지 알아보겠습니다.
// 예시 코드
const [isSubmitting, setIsSubmitting] = useState(false)
...
const onClickSubmit = async() => {
setIsSubmitting(true)
await createBoard ({
variables: {
writer,
password,
title,
contents
}
})
setIsSubmitting(false)
}
...
await에 포함되는 함수들은 Task/Que에서 작업을 수행하게 됩니다.
따라서 isSubmitting이라는 state값이 바뀌면서 렌더링이 진행되고, await 부분을 만나게 되면서 Task/Que에서 작업이 진행된 후에, 다시 isSubmitting 이라는 stater값이 바뀌면서 렌더링이 진행되게 됩니다.
회사에 들어가 협업을 진행하거나 팀 프로젝트를 진행하게 되면 이제 팀원들과 깃을 사용하게 됩니다.
혼자 깃을 사용할 때와는 어떻게 다른지 알아봅시다.
깃에는 브랜치가 있습니다. 저희는 계속 master(또는 main) 브랜치 한곳에서 작업을 해왔습니다.
이제 master
브랜치는 프로덕션에 배포할 준비가 된 상태만 올리도록 합니다. 그리고 master 브랜치에서 나온 dev
브랜치에서 개발을 합니다.
개발을 마치고, 프로덕션에 배포할 준비가 되면 master 브랜치와 합치게됩니다.
여기서 더 나아가서 dev
브랜치에서 기능별로 feature
브랜치를 빼서 개발하고 기능 개발이 완료되면 dev 브랜치에 합칩니다.
hot-fix 브랜치는 말 그래도 긴급하게 에러를 고치기 위해 만드는 브랜치입니다. 이 브랜치는 master 브랜치에서 바로 만들어서 프로덕션에서 생긴 이슈를 고치고 master 브랜치로 합쳐서 배포할 수 있도록 합니다.
release 브랜치는 dev 브랜치에서 생성합니다. dev 브랜치에서 feature 브랜치들을 만들어서 기능들을 모두 개발하고 합칩니다. 그 다음에 dev 브랜치에서 release 브랜치를 생성하고, 프로덕션을 출시하기 위해서 필요한 코드들만 덧붙이도록 합니다. 그후 master 브랜치에 합칩니다. 또한 dev 브랜치에서는 release 브랜치를 합쳐서 최신 버전으로 유지합니다.
트렐로(Trello)는 다양한 업무용 협업툴 중 하나로 프로젝트 관리형 협업툴 입니다. 하나의 board 위에 해야하는 작업(To Do) 진행중인 작업(In Progress) 완료한 작업(Completed) 등의 card 를 만들어 여러 사람과 소통하고 할 일을 관리하여 효율적으로 프로젝트를 진행할 수 있게 도와줍니다.
위의 브랜치를 이용한 과정들은 한 개의 저장소에서 이루어지는 것입니다. Git Fork Workflow는 저장소를 fork(복제) 해서 협업하는 작업 과정을 말합니다.
내 저장소에 잘 복사해 왔습니다.
fork 한 저장소를 내 컴퓨터에서 clone 합니다.
git clone origin 포크한_내_깃허브_주소
팀장의 저장소를 remote로 등록합니다. git remote add upstream 팀장의_깃허브_주소
새로 브랜치를 나눠서 개발을 진행합니다. 프로세스에 따라 커밋과 푸시를 내 저장소에 합니다.
하나의 브랜치의 개발이 완료되면 내 저장소(origin)에서 팀장의 저장소(upstream)로 Pull Request를 보냅니다. 이것은 내가 개발한 코드를 합쳐달라고 요청하는 것입니다.
git pull upstream
💡 git pull upstream시 주의할 점!!!
branch를 계속해서 생성해서 작업하다보면 branch가 점점 많아지게 됩니다. branch가 많아졌다는건 협업을 진행하면서 많은 코드들이 추가가 되었다는 말을 의미합니다. 전날에 각자 맡은 기능들을 구현하고 매일 업무를 진행하기 전에 최신화된 코드들을 불러오는 작업이 필요한데, 이때 본인의 master(혹은 develop) 브랜치에서 ‘ git pull upstream develop’을 진행하셔야 합니다! 이렇게 최신화된 코드들이 있는 master(혹은 develop) branch에서 git checkout -b “오늘 해야하는 branch” 를 하셔야만 최신화된 코드에서 계속해서 업무를 진행하실 수 있습니다.