- 환경설정
node 18.14.0 / vue3 / vite
과제형 프로젝트를 진행하면서 v-bind:class를 객체형태로 사용하고 조건식을 속성값으로 사용하는 방법을 쓰게 되었다.
문제제기) input type="email" 에서 실시간 value값이 설정한 조건에 부합하는 경우 원하는 클래스명이 붙도록 하는 로직구현이 필요
input에 실시간으로 입력되는 값을 캐치해야하므로 watch() 속성에 구현
[과정]
1. true, false값에 따라 구현되는 요소는 기존에 클래스명이 있다.
2. 삼항연산자를 통해서는 한가지 조건만 충족할 수 있다. ( 기존에 가진 클래스명 / 조건에 부합하는 경우 ) -> 조건에 부합하지 않는 경우를 를 구현할 수 없음
3. v-bind:class (또는 :class)를 사용해 클래스이름을 동적으로 할당할 수 있는데, 그 방식 중 하나가 객체형태이다.
-> 객체 형태는 여러 조건을 동시에 처리할 수 있으며 조건별로 클래스를 적용할 수 있는 유연함이 있다.
4. data() 속성에 데이터를 추가적으로 부여하고 :class를 통해 클래스 이름을 객체형태로 부여한다.
해석) 객체형태에서는 클래스 이름을 객체의 속성명으로 사용하고, 해당 클래스가 적용될지 말지를 결정하는 조건식을 속성값으로 사용한다.
각 클래스의 이름은 객체의 속성명으로 사용 -> 각 클래스 이름에 대응하는 값은 조건식이 된다. 해당 조건식이 true일 경우, 클래스가 적용이 되고 false일 경우 적용되지 않는다.
<div :class="{'클래스명1':조건1, '클래스명2':조건2, '클래스명3':조건3}"></div>
input(v)를 통해 들어오는 value값이 emailPattern 조건에 부합하는 경우, valid값은 true가 되고 failed 값의 경우 늘 valid의 값을 부정하므로 value값이 조건문을 부합하지 않는 경우 true값을 반환한다.
'input-container'은 늘 truer값으로 지정했으므로 기본 클래스명으로 설정했음을 알 수 있다.
조건식을 속성값이 결정되므로 (조건식이 true일 경우, 클래스가 적용이 되고 false일 경우 적용되지 않는다) valid가 true일 경우, success라는 클래스명이 붙고, valid가 false인 경우 failed가 true값이 되므로 failed라는 클래스명이 붙는다.
[Vue] pinia 를 이용한 상태관리 (+compositionApi, optionsApi 차이) (0) | 2025.03.12 |
---|---|
[Vue] vue3 + vite 깃허브 페이지 배포하기 (0) | 2025.02.16 |
[Vue] Tailwind.css(with Nuxt.js) 시작하기 (0) | 2025.02.13 |
[Vue] Nuxt.js 시작하기 (0) | 2025.02.11 |
[Vue] Vue 프로젝트 시작하기 - with vite (0) | 2025.01.17 |