1. 로그인 정보 vuex를 사용해서 store에 넘기기
2. Heatmap 로직 이해 + 데이터 연결 방법 찾기
3. 마이페이지 정보 분기
methods: {
로그인 함수 실행 후 store의 accounts 모듈의 logIn 함수 호출
...mapActions(accounts, ['logIn']),
login: function () {
axios({
method: 'post',
url: `${process.env.VUE_APP_API_URL}/user/login`,
data: this.credentials
})
.then(res => {
localStorage.setItem('jwt', res.data.accessToken)
post요청에 성공하면 actions 함수 실행하기!!
this.logIn(res.data.user)
this.$router.push({name:'Main'})
})
.catch(err => {
...
})
}
}
}
const accounts = {
namespaced: true,
state: {
user: null,
isLogin: false
},
mutations: {
LOGIN: (state, userInfo) => {
state.user = userInfo
state.isLogin = true
}
},
actions: {
logIn: ({ commit }, userInfo) => {
commit('LOGIN', userInfo)
}
}
}
export default accounts
여러개의 index.js 파일을 모듈화할 수 있다는 것을 배웠다!
팀원 언니가 요렇게 사용할 수 있다는 것을 알려줘서
검색해보고 적용해보았다 🎨
내가 못하겠다고 찡찡거렸던 그 Heatmap이다 ㅋㅋㅋ
<div class="outer-box my-3">
<div class="p-2">
<div id="app">
<calendar-heatmap
### 커밋 쳌이 될 데이터를 values에 담아줌!!!!
#### 감동 100배 ✨
:values="[{ date: '2021-9-27', count: 6 },
{ date: '2021-9-21', count: 6 }]"
:start-date="2021-1-22"
end-date="2022-1-22"
:range-color="[
'#ebedf0',
'#dae2ef',
'#c0ddf9',
'#73b3f3',
'#3886e1',
'#17459e',
]"
tooltip-unit="소주~"
/>
</div>
</div>
</div>
데이터 연동 자체는 어렵지 않았으나 imgUrl을 가져오느라 꽤 오래걸렸다.
axios 안에서 이미지 경로를 할당해줄 수 없다! Vue는 비동기적이라! 요 부분을 놓치고 진짜 요기조기 되는 곳에서 모두 imgUrl 할당을 시도했다.
정답은! computed로 따로 빼주는 것!
created: function (){
axios({
method: 'get',
url: `${process.env.VUE_APP_API_URL}/user/info`,
headers: this.setToken()
})
.then(res => {
const userInfo = res.data.user
this.user = userInfo
// if (userInfo.img) {
// console.log('yess')
// this.img = userInfo.imgUrl
// } else {
// console.log('noo')
// this.img = '@/assets/chat.png'
// }
})
.catch(err => {
console.log(err)
})
},
computed: {
imgUrl: function () {
if (this.user.img) {
return this.user.imgUrl
} else {
return require('@/assets/chat.png')
}
}
}
여태껏 모달창을 사용하지 않고 router로 모든 링크를 넘겨줬다.
머릿 속으로는 v-if와 v-bind를 써서 휙휙 on/off처럼 하면 되겠지~라고 생각했다.
역쉬나 호락호락하지 않게 모달창이 뜨지를 않네 🤯
ㅇㅋ v-if 버리고 v-dialog 간다!!!
음,,, v-dialog를 상위 컴포넌트에 어떻게 불러오지??
구글링
해결 완료!!!!!
오늘 정말 쉴새 없이 todo list를 깔끔하게 해치웠다.
너무너무 뿌듯하고~ 허리가 너무 아프다 🙄
에러가 났을 때는 '맞왜틀'거리며 구글링을 하다가도
에러는 나의 사소한 실수 혹은 무지로부터 발생한다는 것을
매일 깨닫는 중이다.
오늘의 까먹음: Vue의 비동기성
코드를 작성할수록, 날이 갈수록 실력이 늘어가는 것을 느낀다.
역시 뚜드려 맞으며 배워야 머릿 속에 고스란히 남는다.
하루 종일 앉아 있고, 하루 종일 구글링하고 코드를 짜지만 재밌다.
다행이다.
오래 방황하지 않고 나에게 맞는 길을 찾아서.