<aside> 💡 1. navBar는 로그인 유무에따라 유저에게 보이는 화면이 다르다.
</aside>
먼저 버튼을 누르거나 링크를 누르면 모달이 나오게 만들었다. 모달을 종료하는 방법은 외곽을 누르면 된다. 이때 @click.self
를 사용하면 해당 컴포넌트만 눌렀을 경우 콜백함수가 실행된다.
회원가입 모달은 App.vue에 놓고 v-if를 활용하여 조건부 랜더링을 했다. 버튼을 누르면 App.vue에 true를 emit한다. Vuex를 활용하여 저장할까 생각도 했지만, 전역적으로 사용할 데이터거나 중요한 데이터는 아닌 것 같아서 emit을 활용했다. (나중에 조금 후회했다.. )
// App.vue
<template>
<div id="app">
<nav-bar
@show-sign-up-modal="showSignUpModal"
@show-log-in-modal="showLogInModal"
@show-profile-modal="showProfileModal"
></nav-bar>
<router-view />
<the-sign-up-modal
v-if="signUp"
class="modal"
@hide-sign-up-modal="hideSignUpModal"
@show-log-in-modal="showLogInModal"
/>
<the-log-in-modal
v-if="logIn"
class="modal"
@hide-log-in-modal="hideLogInModal"
@show-sign-up-modal="showSignUpModal"
></the-log-in-modal>
</div>
</template>
<script>
import NavBar from "@/components/NavBar.vue";
import TheSignUpModal from "@/components/TheSignUpModal.vue";
import TheLogInModal from "@/components/TheLogInModal.vue";
export default {
name: "App",
data() {
return {
signUp: false,
logIn: false,
profileModal: false,
};
},
components: { NavBar, TheSignUpModal, TheLogInModal, TheProfileModal },
methods: {
showSignUpModal(data) {
this.signUp = data;
},
showLogInModal(data) {
this.logIn = data;
},
hideSignUpModal(data) {
this.signUp = data;
},
hideLogInModal(data) {
this.logIn = data;
},
},
};
</script>
response를 console.log로 확인해보니 다음과 같은 결과를 알 수 있었다.
즉, response.data.key는 token을 의미한다. 오류창을 만들었다.