Vue (or VueJS) is a progressive web framework for building web applications or enhancing existing html websites. I enjoy the design and layout of how Vue is structured, especially with the new composition API.
You can have decision fatigue with javascript frameworks, I did. I quite like the Vue documentation and straight forward approach to problems. It also seems to get better adapting new features under the hood (for Vue 3+) to increase productivity.
In Vue – as with any framework – how yo communicate with components is key. Here is my notes on how to communicate with components
You access this by sending props to the component, where the component defines them as a list, or object from defineProps(...). Using the v-bind:propName or the shortcut :propName can be accessed to pass data to the child.
Receiving data is used by sending a signal or emitting a signal. In Vue, you can define these with defineEmits. This gives you a handle to emit on child components by some interactivity. Typically you access emits with v-on:emitName or the shorthand @emitName. Below is an example,
// Child
<script setup>
const value = 1
const emit = define(['child-emit'])
const sendOne = (event) => {
console.log("Child sending value", value)
emit('child-event', value)
}
</script>
<template>
<button @click="sendOne">OK</button>
</template>
// Parent
<script setup>
import { Child } from `@/components/Child.vue`
const handleEmit = (event) => {
console.log("Response from child handle", event)
}
</script>
<template>
<Child @child-emit="handleEmit()" />
</template>
© 2017–2024 David Kalliecharan