classStyleBinding
v-bind를 이용한 class binding을 알아보고, ref와 Array,reactive,computed의 관계를 알아보자
class binding
<script setup>
import { ref, reactive,computed } from 'vue'
const count = ref(0);
const countState = reactive({
counts: count,
});
let tag = ref(true);
const computedObject = computed(
() => {
return {
testClass: tag.value
}
}
)
const classObject = reactive({
active: tag, //.value = no
'text-danger': false
})
const activeClass = ref('activeClass')
const arrayObject = reactive([activeClass])
const countUp = () =>{
console.log('count:', countState.counts);
return countState.counts++;
}
const changeRef = () => {
tag.value = !(tag.value);
console.log('tag:', tag.value);
}
const chageObject = () => {
classObject.active = !(classObject.active);
console.log('classObject.active', classObject.active);
}
const chageArray = () => {
arrayObject[0].value = arrayObject[0].value + 's';
console.log('arrayObject[0].value', arrayObject[0].value);
}
const chageComputed = () => {
computedObject.testClass = !(computedObject.testClass)
console.log('computedObject.testClass', computedObject.testClass);
}
</script>
<template>
<button @click="countUp">
countUp: {{ countState.counts }}
</button>
<br>
<button @click="changeRef">
ref is true ? {{ tag }}
</button>
<br>
<button @click="changeObject">
object ? {{ classObject.active }}
</button>
<br>
<button @click="chageArray">
array ? {{ arrayObject[0].value }}
</button>
<br>
<button @click="chageComputed">
computed ? {{ computedObject.testClass }}
</button>
<br>
<div class="A" :class="computedObject">
A Box
</div>
<div class="B" :class="{ testClass2: tag }">
B Box
</div>
<div class="C" :class="classObject">
C Box
</div>
<div class="D" :class="[activeClass]">
D Box
</div>
<div class="E" :class="computedObject">
E Box
</div>
</template>
ref와 객체의 조합
ref + reactive
let tag = ref(true);
const classObject = reactive({
active: tag, //.value = no
'text-danger': false
})
const chageObject = () => {
classObject.active = !(classObject.active);
console.log('classObject.active', classObject.active);
}
- ref + reactive =>
.value
붙일 필요가 없다
ref + computed
let tag = ref(true);
const computedObject = computed(
() => {
return {
testClass: tag.value
}
}
)
const chageComputed = () => {
computedObject.testClass = !(computedObject.testClass)
console.log('computedObject.testClass', computedObject.testClass);
}
- ref + computed =>
.value
붙여야함 - 대신 computed에서 값을 변경하여도 ref는 반응이 없다. 즉, 단방향이다
ref + Array
const activeClass = ref('activeClass')
const arrayObject = reactive([activeClass])
const chageArray = () => {
arrayObject[0].value = arrayObject[0].value + 's';
console.log('arrayObject[0].value', arrayObject[0].value);
}
- reactive객체 안에서는
.value
를 붙이지않고, reactive객체를 사용할 땐.value
를 붙인다
참고자료: Vue3 완벽 마스터: 기초부터 실전까지 - “기본편”
Javascript
👉 pinia기본
2023.05.05
👉 github pages에서 vue router 404 에러
2023.04.03
👉 object의 변수인 경우 ref와 reactive 어느 것을 사용할까
2023.04.02
👉 Route
2023.04.01
👉 Template ref
2023.03.26
👉 provide와 inject
2023.03.25
👉 slots
2023.03.24
👉 nonProps
2023.03.23
👉 v-model을 통한 3depth 양방향 바인딩
2023.03.22
👉 emit, component와 v-model을 통한 양방향 바인딩
2023.03.21
👉 props
2023.03.20
👉 watch
2023.03.19
👉 양방향 바인딩
2023.03.18
👉 event Parameter
2023.03.17
👉 Scope와 Closure
2023.03.17
👉 classStyleBinding
2023.03.16
👉 computed
2023.03.15
👉 Ref와 Reactive
2023.03.14
👉 notion page를 웹사이트에 삽입하기
2022.01.25
👉 Json
2021.04.16
👉 Javascript 배열
2021.04.15
👉 Javascript 객체
2021.04.14
👉 Javascript 클래스
2021.04.13
👉 Javascript 함수
2021.04.12
👉 Javascript 변수심화
2021.04.11
👉 Javascript 변수
2021.04.10
Frontend
👉 pinia기본
2023.05.05
👉 github pages에서 vue router 404 에러
2023.04.03
👉 object의 변수인 경우 ref와 reactive 어느 것을 사용할까
2023.04.02
👉 Route
2023.04.01
👉 Template ref
2023.03.26
👉 provide와 inject
2023.03.25
👉 slots
2023.03.24
👉 nonProps
2023.03.23
👉 v-model을 통한 3depth 양방향 바인딩
2023.03.22
👉 emit, component와 v-model을 통한 양방향 바인딩
2023.03.21
👉 props
2023.03.20
👉 watch
2023.03.19
👉 양방향 바인딩
2023.03.18
👉 event Parameter
2023.03.17
👉 Scope와 Closure
2023.03.17
👉 classStyleBinding
2023.03.16
👉 computed
2023.03.15
👉 Ref와 Reactive
2023.03.14
👉 notion page를 웹사이트에 삽입하기
2022.01.25
👉 간단한 반응형 메뉴갖는 웹 만들기
2021.08.04
👉 Json
2021.04.16
👉 Javascript 배열
2021.04.15
👉 Javascript 객체
2021.04.14
👉 Javascript 클래스
2021.04.13
👉 Javascript 함수
2021.04.12
👉 Javascript 변수심화
2021.04.11
👉 Javascript 변수
2021.04.10
👉 CSS Centering
2021.04.09
👉 CSS flexbox
2021.04.08
👉 CSS 변수
2021.04.07
👉 CSS Size
2021.04.06
👉 CSS layout
2021.04.05
👉 CSS 기본
2021.04.04
👉 HTML5 Data 속성
2021.04.03
👉 HTML의 다양한 태그
2021.04.02
👉 Visual studio code의 유용한 툴
2021.04.01
👉 HTML 기초
2021.04.01
Vue
👉 pinia기본
2023.05.05
👉 github pages에서 vue router 404 에러
2023.04.03
👉 object의 변수인 경우 ref와 reactive 어느 것을 사용할까
2023.04.02
👉 Route
2023.04.01
👉 Template ref
2023.03.26
👉 provide와 inject
2023.03.25
👉 slots
2023.03.24
👉 nonProps
2023.03.23
👉 v-model을 통한 3depth 양방향 바인딩
2023.03.22
👉 emit, component와 v-model을 통한 양방향 바인딩
2023.03.21
👉 props
2023.03.20
👉 watch
2023.03.19
👉 양방향 바인딩
2023.03.18
👉 event Parameter
2023.03.17
👉 classStyleBinding
2023.03.16
👉 computed
2023.03.15
👉 Ref와 Reactive
2023.03.14
댓글 쓰기