[Java Web programming] [Spring Boot + Vue.js] 게시판 만들기 - 버튼

이번 포스팅은 공통으로 사용되는 버튼을 컴포넌트화 하는 것에 대해 알아보자

 

버튼 컴포넌트

기존 v-btn에 추가적으로 반응형, 아이콘을 적용하기 위해 공통 컴포넌트로 구현

 

구현

1. 컴포넌트 구현

 
 
<template>
 
<v-btn
 
class="white--text"
 
v-on="$listeners"
 
v-bind="$attrs"
 
v-if="!isMobile()"
 
>
 
<v-icon small>
 
{{ iconName }}
 
</v-icon>
 
<span style="width: 5px" v-if="btnName"></span>
 
{{ btnName }}
 
</v-btn>
 
<v-btn class="white--text" v-on="$listeners" v-bind="$attrs" v-else>
 
<v-icon small>
 
{{ iconName }}
 
</v-icon>
 
</v-btn>
 
</template>
 
 
 
<script>
 
import btnMixins from '@/mixins/btnMixins'
 
 
 
export default {
 
mixins: [btnMixins],
 
props: {
 
iconName: String,
 
btnName: String,
 
},
 
}
 
</script>
  • v-on="$listeners" 를 사용하면 부모의 이벤트 리스너를 자식에게 전달할 수 있다.
  • v-bind="$attrs" 사용 시 선택적으로 필요한 속성만 자식 컴포넌트에 렌더링 할 수 있다.
  • Mixins 을 이용하여 구현한 isMobile() 함수를 사용하여 화면 사이즈가 모바일인지 여부를 확인하여 버튼의 모양을 다르게 구성한다.

2. Mixins 구현

 
 
export default {
 
methods: {
 
isMobile() {
 
return this.$vuetify.breakpoint.mobile
 
},
 
},
 
}
  • Vuetify의 breakpoint 속성을 이용해 모바일 화면 여부를 리턴한다.

3. 전역 컴포넌트 선언

 
 
// 버튼 전역 컴포넌트
 
import Button from '@/components/common/Button'
 
// 버튼 전역 컴포넌트 선언
 
Vue.component('Button', Button)
  • main.js 에 버튼 컴포넌트를 전역으로 선언하여 각 컴포넌트마다 import 가 필요 없도록 한다.

사용 방법

버튼은 여러 곳에 쓰이지만 예시로 게시판 목록의 검색 버튼 부분이다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 
 
<template>
 
<Button
 
@click="getBoardList"
 
color="blue-grey darken-1"
 
rounded
 
small
 
block
 
iconName="mdi-magnify"
 
btnName="Search"
 
></Button>
 
</template>
 
 
 
<script>
 
export default {
 
methods: {
 
getBoardList() {
 
// 게시글 목록 조회
 
},
 
},
 
}
 
</script>
  • v-btn의 다양한 속성과 props 속성으로 전달할 아이콘, 버튼 명을 설정한다.
  • click 이벤트로 부모 컴포넌트에 존재하는 게시글 목록 조회 함수를 호출한다.

동작 확인

 

 

 

 

[출처] https://dev-jsk.tistory.com/132

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
206 [Java Web programming] [Spring] WebFlux란 무엇인가? - 개념(특징), MVC와 비교, 사용 이유 file 졸리운_곰 2023.07.18 78
205 [Java Web programming] [Spring Boot + Vue.js] 게시판 만들기 - 에러 file 졸리운_곰 2023.04.07 72
» [Java Web programming] [Spring Boot + Vue.js] 게시판 만들기 - 버튼 file 졸리운_곰 2023.04.07 82
203 [Java Web programming] [Spring Boot + Vue.js] 게시판 만들기 - Toast UI Editor, Viewer file 졸리운_곰 2023.04.07 67
202 [Java Web programming] [Spring Boot + Vue.js] 게시판 만들기 - Tooltip, Snackbar file 졸리운_곰 2023.04.07 80
201 [Java Web programming] [Spring Boot + Vue.js] 게시판 만들기 - 날짜, 시간, 날씨 file 졸리운_곰 2023.04.07 76
200 [Java Web programming] [Spring Boot + Vue.js] 게시판 만들기 - 구성 졸리운_곰 2023.04.07 77
199 [Java Web programming] [Spring Boot + Vue.js] 게시판 만들기 - 소개 file 졸리운_곰 2023.04.07 85
198 [Java Web programming] SpringBoot, Vue 연동하기 file 졸리운_곰 2023.01.30 99
197 [JSP] [jstl ] case when 중첩 방법 file 졸리운_곰 2023.01.24 69
196 [JSP] intelliJ로 JSP 프로젝트 생성, Servlet 실행해보기 file 졸리운_곰 2022.12.31 95
195 [JSP} Jsp 커스텀 태그라이브러리(Custom Tag Library Descriptor) 생성 및 사용 졸리운_곰 2022.12.07 90
194 [JSP] JSP 커스텀 태그(Custom Tag) - 태그파일 file 졸리운_곰 2022.12.07 78
193 [Java Web programming] Velocity 사용하기 졸리운_곰 2022.08.11 89
192 [java html template engine] [Velocity] velocity 기본 문법 file 졸리운_곰 2022.08.10 90
191 [Java Web 프로그래밍] SPRING BOOT SSO 자료 정리 file 졸리운_곰 2022.07.27 113
190 [Spring] 스프링 tiles 사용하기! file 졸리운_곰 2021.10.17 108
189 [JSP][Java] [JSP] JSP 문법 구조 / include를 활용해 layout 나누기 file 졸리운_곰 2021.09.09 89
188 [SpringBoot] 타임리프(Thymeleaf) Thymleaf for template engine file 졸리운_곰 2021.09.05 77
187 [스프링부트] Spring Boot + Thymeleaf CRUD Example file 졸리운_곰 2021.09.03 76
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED