👉🏻 Fotis demonstrates that using Vue with TypeScript brings many benefits.
👉🏻 With features like typed props, emits, slots, state management, and generics, it noticeably improves the readability of a codebase and ensures everything works as expected.
👉🏻 "In short words, we will be sending a request under the hood for the next resources so that when user clicks the load more button, they will instantly see the result."
Eager delay spinners are not a good user experience as they can make a snappy user interface feel slower. We can provide a better user experience (UX) by delaying spinners to appear only after a perceivable delay.
To achieve this improved UX, you can use AsyncComponent. Vue provides the defineAsyncComponentdefineAsyncComponent function to lazy load components:
1<template>2 <AsyncComp />3</template>45<script setup>6import { defineAsyncComponent } from 'vue'78const AsyncComp = defineAsyncComponent(() => {9 return new Promise((resolve, reject) => {10 // ...load component from server11 resolve(/* loaded component */)12 })13})14</script>
defineAsyncComponentdefineAsyncComponent accepts a loader function that returns a Promise. The resolveresolve callback should be called if the component has been loaded, and the rejectreject callback to indicate that loading the component has failed.
Now let's implement the delayed loading spinner by using the advanced options of the defineAsyncComponentdefineAsyncComponent function:
1<template>2 <AsyncComp />3</template>45<script>6import { defineAsyncComponent } from 'vue'7import Loading from './components/Loading'89export default {10 components: {11 AsyncComp: defineAsyncComponent({12 // the loader function13 loader: () =>14 new Promise((resolve) => {15 setTimeout(() => {16 resolve(import('./components/HelloWorld.vue'))17 }, 2000)18 }),1920 // A component to use while the async component is loading21 loadingComponent: Loading,22 // Delay before showing the loading component. Default: 200ms.23 delay: 500,24 }),25 },26 data() {},27}28</script>
This demo simulates a network request to fetch HelloWorld.vueHelloWorld.vue from a server which takes 2 seconds:
👉🏻 Ever wondered why cookies are not passed correctly to subrequests - e.g. during SSR or when using Nitro/H3?
👉🏻 Alexander takes a look at how to pass all the important information, including event context and headers to further calls, eliminating different behavior on server and client.
Weekly Vue News #194 Reactive Time Ago View online Hi 👋 I'm on vacation this week, so no special news from my side — just some fresh Vue & Nuxt content for you! Enjoy this issue and have a lovely week ☀️ Vue 📕 Optimizing heavy operations in Vue with Web Worke...
Weekly Vue News #205 Weekly Vue News #205 - Vue Language Tools 3.0, useSlots, Nuxt Tips & More! View online Hi 👋 I'm back from my vacation and ready to share the latest Vue & Nuxt news with you! Enjoy this issue and have a lovely week ☀️ Vue 📕 What is useSlots in Vue? ...
Sunday, August 25, 2024 The problem with the state-by-state abortion laws that Trump says he favors: 1. The women in states that ban abortion who will die as a result of the bans, and many more who will be severely injured, and all will have their freedoms severely restricted. 2. He's lying. When Congress passes a national abortion ban he'll sign it and boast about it, of course . # If you're interested in languages and compiler compilers and how to bootstrap a scripting environment, then you'll enjoy the progress I've made in the project to get UserTalk running in today's environments. I welcome comments from experienced or curious language devs. # Walt Mossberg : "Journalists have one core job: to tell the truth, especially when it's clear. The staff of the NY Times has done it in the past, even at great risk. Why don't they do it now?" # My response : "We have no visibility into the inner workings of the NYT. We...
评论
发表评论