<template>
<h2>{{ name }}</h2>
</template>
<script>
export default {
name: 'TestComponent',
setup() {
const name = 'rachaen';
return {
name,
};
},
};
</script>
<style></style>
<template>
<div>
<h2>{{ state.name }}</h2>
<h2>{{ state.age }}</h2>
</div>
</template>
<script>
import { reactive } from 'vue';
export default {
name: 'TestComponent',
setup() {
const state = reactive({
name: 'rachaen',
age: 26,
});
return {
state,
};
},
};
</script>
<template>
<div>
<h2>{{ name }}</h2>
<h2>{{ age }}</h2>
</div>
</template>
<script>
import { reactive } from 'vue';
export default {
name: 'TestComponent',
setup() {
const state = reactive({
name: 'rachaen',
age: 26,
});
return {
name: state.name,
age: state.age,
};
},
};
</script>
<template>
<div>
<h2>{{ name }}</h2>
<h2>{{ age }}</h2>
</div>
</template>
<script>
import { reactive, toRefs } from 'vue';
export default {
name: 'TestComponent',
setup() {
const state = reactive({
name: 'rachaen',
age: 26,
});
return toRefs(state);
},
};
</script>

<template>
<div>
<h2>{{ isAwesome }}</h2>
<h2>{{ isNotAwful }}</h2>
</div>
</template>
<script>
export default {
name: 'TestComponent',
setup() {
let isAwesome = false;
let isNotAwful = isAwesome;
isAwesome = true;
return {
isAwesome,
isNotAwful,
};
},
};
</script>

<template>
<div>
<h2>{{ isAwesome }}</h2>
<h2>{{ isNotAwful }}</h2>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
name: 'TestComponent',
setup() {
let isAwesome = ref(false);
let isNotAwful = isAwesome;
console.log(isNotAwful);
return {
isAwesome,
isNotAwful,
};
},
};

<div>
<h2>{{ isAwesome }}</h2>
<h2>{{ isNotAwful }}</h2>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
name: 'TestComponent',
setup() {
let isAwesome = ref(false);
let isNotAwful = isAwesome;
isAwesome.value = true;
return {
isAwesome,
isNotAwful,
};
},
};
</script>

<template>
<div>
<h2>{{ isAwesome }}</h2>
<h2>{{ name }}</h2>
</div>
</template>
<script>
import { ref, reactive, toRefs } from 'vue';
export default {
name: 'TestComponent',
setup() {
let isAwesome = ref(true);
const state = reactive({
name: 'rachaen',
age: 26,
});
return {
isAwesome,
...toRefs(state), // toRefs만 하면 정상적으로 가지지 않음. object형태이기 때문에 spread operator(...)을 사용해서 보내야 한다.
};
},
};
</script>
<template>
<div>
<h2>{{ name }}</h2>
<button @click="changeName">ChangeName</button>
<h2>메뉴명: {{ menu }}, 가격: {{ price }}</h2>
<button @click="changeMenu">changeMenu</button>
</div>
</template>
<script>
import { ref, reactive, toRefs } from 'vue';
export default {
name: 'TestComponent',
setup() {
const name = ref('rachaen');
function changeName() {
name.value = 'geon';
}
const state = reactive({
menu: '피자',
price: 100,
});
function changeMenu() {
state.menu = '돈까스';
state.price = '500';
}
return {
name,
changeName,
changeMenu,
...toRefs(state),
};
},
};



<template>
<div>
<h2>{{ name }}</h2>
<button @click="changeName">ChangeName</button>
<div>
<input type="text" v-model="name" />
</div>
</div>
</template>
<script>
export default {
name: 'TestComponent',
setup() {
const name = 'rachaen';
function changeName() {
name.value = 'geon';
}
return {
name,
changeName,
};
},
};
</script>

<template>
<div>
<h2>{{ name }}</h2>
<button @click="changeName">ChangeName</button>
<div>
<input type="text" v-model="name" />
</div>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
name: 'TestComponent',
setup() {
const name = ref('rachaen');
function changeName() {
name.value = 'geon';
}
return {
name,
changeName,
};
},
};
</script>
VUE3 composition API 간략하게 알아보기 (ref, reactive, methods, v-model )