👉🏻 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.
Read this on my blog Hey all! Tomorrow I'm launching Composable Design Patterns — a collection of 15 patterns on how to use the composition API better. I've been working on this for a while (it's been in my head for years), and I'm excited to share it with you! You'll be getting a special launch discount, so make sure to pay attention to your email inbox tomorrow. Other than that, I've got a new podcast episode for you, and some links to check out, as well as some tips. Enjoy your week! — Michael ...
Hey! I need to clear some things up. You might be interested in learning how to write better composables, but unsure if Composable Design Patterns is right for you. If you're a beginner Vue dev, this is perfect to get you started off on the right foot — without developing bad habits or learning things the hard way. And if you've been writing Vue for a while, you'll get immediate value from this course because you'll be able to see exactly how these patterns will help you. You've experienced the pain of badly written composables (maybe even ones you wrote yourself 🙃). For those of you who are transitioning from the Options API to the Composition API (which is better for many reasons ), I specifically included the Options to Composition pattern to provide a super simple path for upgrading your app one component at a time. But this course isn't for everyone. This course is designed for professional Vue developers . If you're a student, o...
评论
发表评论