Component State and Events
Learn how to manage the component state and handle events in Vue using TypeScript.
We'll cover the following...
Component state
The properties that a component exposes to a parent component are read-only. This means that only the parent component can change these properties and that the flow of data is one-way, from parent to child. If our component needs to maintain its own state and update an internal property, such as the value from an input control, we will need a place to store this state. Vue components use a function named data that returns a structure for storing the internal state.
Let’s update our HelloWorld
component and introduce an internal property named
myText
as follows:
<template><p>Hello World</p><p>msg prop = {{ msg }}</p><input type="text" v-model="myText" /><button v-on:click="clicked()">Submit</button></template><script lang="ts">import { Options, Vue } from 'vue-class-component';@Options({props: {msg: String}})export default class HelloWorld extends Vue {msg!: string;myText!: string;data() {return {myText: this.msg}}clicked() {console.log(`this.myText = ${this.myText}`);}}</script>
Here, we have made a number of changes to our component:
-
Firstly, we have introduced an
input
element within our HTML template on line 4 that is using thev-model
attribute to bind the value entered in the input control to a property namedmyText
. This binding is a two-way binding, so the value shown on the screen and the internal value of themyText
property are kept synchronized. -
Secondly, we have made is to introduce a
button
element on line 5, and we have set thev-on:click
attribute to a method namedclicked()
. Thev-on
attribute is the method that Vue uses to trap DOM events, and in this case, we are trapping theclick
event. -
Thirdly, we have introduced a class property named
myText
of typestring
on theHelloWorld
class on line 19. -
The fourth change we have ...