Expressions 주의사항
- 각 바인딩에는 하나의 단일 표현식만 포함될 수 있음
- 표현식은 값으로 평가할 수 있는 코드 조각(return 뒤에 사용될 수 있는 코드여야 함)
<p>
요소를 제거/삽입(출력할것이냐 말것이냐)(렌더링 할것이냐 말것이냐)전체 구문
- Argument(인자)는 앞에 Name이 뭐냐에 따라서 달라짐
- v-on은 이벤트 감지하는 애라서 뒤에 인자들이 전부 이벤트의 이름들이다.
- .으로 시작하는 구문 = 수식어(Modifiers) 도 있는 애가 있고 없는 애가 있다.
- .prevent => prevnet Default 의 기능 들어가있음 (앞에 있는 이벤트의 기본 동작을 취소시키는 것)
- "onSubmit" => 이 함수를 호출하겠다.
일부 directive는 directive 뒤에 콜론(:)으로 표시되는 인자를 사용할 수 있음
아래 예시의 href는 HTML a 요소의 href 속성 값을 myUrl 값에 바인딩하도록 하는 v-bind의 인자
아래 예시의 click은 이벤트 수신할 이벤트 이름을 작성하는 v-on의 인자
built-in Directives
v-text / v-show / v-if / v-for / ... /
https://vuejs.org/api/built-in-directives.html
v-bind shortand(약어) : ':' (colon) |
---|
- Dynamic attribute name (동적 인자 이름)
- 대괄호로 감싸서 directive argument에 JavaScript 표현식을 사용할 수도 있음
- JavaScript 표현식에 따라 동적으로 평가된 값이 최종 argument 값으로 사용됨
- 대괄호 안에 작성하는 이름은 반드시 소문자로만 구성 가능
(브라우저가 속성 이름을 소문자로 강제 변환)
isActive의 T/F에 의해 active 클래스의 존재가 결정됨 |
---|
const isAtive = ref(true)
const hasInfo = ref(true)
<div class="static" :class="{active: isAtive, 'text-primary': hasInfo}">Text</div>
// ref는 반응 객체의 속성으로 액세스되거나 변경될 때 자동으로 unwrap
const classObj = ref({
active: isAtive
'text-primary': hasInfo,
})
<div class="static" :class="classObj">Text</div>
const activeCalss = ref('active')
const infoClass = ref('text-primary')
<div :class="[activeCalss, infoClass]">Text</div>
:style
은 JavaScript 객체 값에 대한 바인딩을 지원(HTML sytle 속성에 해당):style
은 kebab-cased 키 문자열도 지원 ( 단, camelCase 작성을 권장 )
const styleObj = ref({
color: activeColor,
fontSize: fontSize.value + 'px'
})
<div :style="styleObj">Text</div>
:style
을 바인딩할 수 있음v-on:event=”handler”
- handler 종류
- Inline handlers : 이벤트가 트리거 될 때 실행 될 JavaScript 코드
- Method handlers : 컴포넌트에 정의된 메서드 이름
- v-on shorthand ( 약어 )
@
@event=’handler’
Inline handlers로는 불가능한 대부분의 상황에서 사용
Method Handlers는 이를 트리거하는 기본 DOM Event 객체를 자동으로 수신
Inline Handlers에서의 메서드 호출
- 메서드 이름에 직접 바인딩하는 대신 Inline Handlers에서 메서드를 호출할 수도 있음
- 이렇게 하면 기본 이벤트 대신 사용자 지정 인자를 전달할 수 있음
Inline Handlers에서의 event 인자에 접근하기
- Inline Handlers에서 원래 DOM 이벤트에 접근하기
- $event 변수를 사용하여 메서드에 전달
Event Modifiers
- Vue는 v-on에 대한 Event Modifiers를 제공해 event.preventDefault()와 같은 구문을 메서드에서 작성하지 않도록 함
- stop, prevent, self 등 다양한 modifiers를 제공
- 메서드는 DOM 이벤트에 대한 처리보다는 데이터에 관한 논리를 작성하는 것에 집중할 것
💡 Modifiers는 chained 되게끔 작성할 수 있으며, 이때는 작성된 순서로 실행되기 때문에 작성 순서에 유의
Key Modifiers
- Vue는 키보드 이벤트를 수신할 때 특정 키에 관한 별도 modifiers를 사용할 수 있음
key가 Enter일 때만 onSubmit 이벤트를 호출하기
form input 요소 또는 컴포넌트에서 양방향 바인딩을 만듦
v-model을 사용하여 사용자 입력 데이터와 반응형 변수를 실시간 동기화
💡 IME가 필요한 언어(한,중,일 등)의 경우 v-model이 제대로 업데이트 되지 않음
- 해당 언어에 대해 올바르게 응답하려면 v-bind와 v-on 방법을 사용해야함
IME ( Input Method Editor)
- 사용자가 입력 장치에서 기본적으로 사용할 수 없는 문자(비영어권 언어)를 입력할 수 있드록 하는 운영 체제 구성 프로그램
- 일반적으로 키보드 키보다 자모가 더 많은 언어에서 사용해야 함IME가 동작하는 방식과 Vue의 양방향 바인딩(v-model) 동작 방식이 상충하기 때문에 한국어 입력 시 예상대로 동작하지 않았던 것
// 1. 단일 체크박스와 boolean 값 활용
<input type="checkbox" id="checkbox" v-model="checked">
// 2. 여러 체크박스와 배열 활용
<input type="checkbox" id="alice" value="Alice" v-model="checkedNames">