This repository has been archived on 2021-09-06. You can view files and clone it, but cannot push or open issues or pull requests.
vuejs_course/2021-07-30_composition-01-s.../src/App.vue

89 lines
1.8 KiB
Vue
Raw Normal View History

<template>
<section class="container">
2021-09-04 14:47:16 +02:00
<user-data
:first-name="user.firstName"
:last-name="user.lastName"
></user-data>
2021-09-04 13:45:39 +02:00
<button @click="setAge">Change Age</button>
<div>
2021-09-04 13:51:08 +02:00
<input type="text" placeholder="First Name" v-model="user.firstName" />
<input type="text" placeholder="Last Name" v-model="user.lastName" />
2021-09-04 14:32:45 +02:00
<input type="text" placeholder="Last Name" ref="lastNameInput" />
2021-09-04 13:45:39 +02:00
</div>
2021-09-04 14:32:45 +02:00
<button @click="setLastName">Change Lastname</button>
</section>
</template>
<script>
2021-09-04 15:18:04 +02:00
import { reactive, computed, watch, ref, provide } from 'vue';
2021-09-04 14:47:16 +02:00
import UserData from './components/UserData';
2021-07-30 15:10:09 +02:00
export default {
2021-09-04 14:47:16 +02:00
components: {
UserData
},
2021-07-30 15:10:09 +02:00
setup() {
const user = reactive({
2021-09-04 13:51:08 +02:00
firstName: '',
lastName: '',
2021-07-30 15:46:49 +02:00
age: 23
});
2021-07-30 15:10:09 +02:00
2021-09-04 13:57:56 +02:00
const userAge = ref(23);
const userName = ref('Muster');
2021-09-04 14:32:45 +02:00
const lastNameInput = ref(null);
2021-09-04 13:57:56 +02:00
watch([userAge, userName], function(newValue, oldValue) {
console.log('old age: ', oldValue[0]);
console.log('new age: ', newValue[0]);
console.log('old name: ', oldValue[1]);
console.log('new name: ', newValue[1]);
});
2021-09-04 13:45:39 +02:00
user.name = computed(function() {
2021-09-04 13:51:08 +02:00
return user.firstName + ' ' + user.lastName;
2021-09-04 13:45:39 +02:00
});
2021-09-04 15:18:04 +02:00
provide('user-age', user.age);
2021-09-04 13:45:39 +02:00
function setAge() {
user.age = '25';
2021-09-04 13:45:39 +02:00
}
2021-07-30 15:10:09 +02:00
2021-09-04 14:32:45 +02:00
function setLastName() {
user.lastName = lastNameInput.value.value;
}
return {
2021-09-04 13:45:39 +02:00
user,
2021-09-04 14:32:45 +02:00
setAge,
setLastName,
lastNameInput
};
2021-07-30 15:10:09 +02:00
}
};
</script>
<style>
* {
box-sizing: border-box;
}
html {
font-family: sans-serif;
}
body {
margin: 0;
}
.container {
margin: 3rem auto;
max-width: 30rem;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
padding: 1rem;
text-align: center;
}
2021-07-30 15:10:09 +02:00
</style>