본문 바로가기
Dev/실습

[Spring Boot + Vue.js] 게시판 만들기 - Tooltip, Snackbar

by dev_jsk 2021. 1. 13.
728x90
반응형

이번 포스팅에서는 보충 설명 및 내용을 표시해주는 말풍선 같은 툴팁과 JavaScript의 Alert과 유사한 스낵바에 대해 알아보자

 

툴팁(Tooltip) 컴포넌트

모바일 화면에서 게시판 상세 댓글 내역에 작성자, 작성시간 아이콘 터치 시 툴팁으로 상세내용을 표시하도록 구현

 

구현

<template>
<div>
<v-tooltip v-bind="$attrs">
<template v-slot:activator="{ on, attrs }">
<v-icon v-on="on" v-bind="attrs" style="padding:0 10px;">
{{ iconName }}
</v-icon>
</template>
<span> {{ title }}<br />{{ content }} </span>
</v-tooltip>
</div>
</template>
<script>
export default {
props: {
iconName: String,
title: String,
content: String,
},
}
</script>
  • v-bind="$attrs" 사용 시 선택적으로 필요한 속성만 자식 컴포넌트에 렌더링 할 수 있다.
  • v-slot:activator="{ on, attrs }" 는 activator 이름을 가진 슬롯에서 on, attrs 슬롯 속성(slot props)을 가져온다는 의미이다.
  • props 속성으로 iconName, title, content를 받아 툴팁을 구성한다.

사용 방법

툴팁 컴포넌트 사용 예시로 게시판 상세 내 댓글 구역의 작성자, 작성일시 아이콘 부분이다.

<Tooltip
bottom
iconName="mdi-account"
title="작성자"
:content="reply.writer"
/>

동작 확인

스낵바(Snackbar) 컴포넌트

게시글 작성, 수정, 삭제 성공 시 하단에 JavaScript Alert 창 처럼 알림창을 표시한다.

 

구현

1. Snackbar.vue

<template>
<v-snackbar v-model="sb.show" :color="sb.color" :timeout="3000">
{{ sb.msg }}
<template v-slot:action="{ attrs }">
<v-btn color="white" text v-bind="attrs" @click="sb.show = false">
<v-icon dark dense>mdi-close-circle-outline</v-icon>
</v-btn>
</template>
</v-snackbar>
</template>
<script>
import { mapState } from 'vuex'
export default {
computed: {
...mapState(['sb']),
},
}
</script>
  • v-model="sb.show" 는 store에 저장된 show 값을 바탕으로 스낵바 표시 유무를 설정한다.
  • timeout 은 스낵바가 표시되는 시간을 설정한다. (단위는 밀리세컨드)
  • @click="sb.show = false" 는 닫기 버튼 클릭 시 show 값을 변경하여 스낵바를 보이지 않도록 한다.

2. store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
// 스낵바 설정
export const SET_SNACKBAR = 'SET_SNACKBAR'
export default new Vuex.Store({
state: {
sb: {
show: false,
msg: '',
color: '',
},
},
mutations: {
[SET_SNACKBAR](state, sb) {
state.sb = sb
},
},
actions: {},
modules: {},
})
  • mutations 명을 변수로 선언한 이유는 오타를 방지하기 위함이다.
  • state 를 객체로 선언하여 mutations 호출 시 객체를 전달받아 간단하게 스낵바를 제어할 수 있다.

사용 방법

스낵바 컴포넌트는 게시글 작성, 수정, 삭제 성공 시 표시된다.

this.$store.commit('SET_SNACKBAR', {
show: true,
msg: 'Delete Complete',
color: 'error',
})

동작 확인

 

728x90
반응형

댓글