I'm now giving early testers access to my Nuxt Starter Kit ! With the code TN8JDLYO, you'll get 30% off — that's a production-ready Nuxt starter kit for around $30.
Just a heads-up: you'll need a Nuxt UI Pro license, since the kit is highly opinionated and tightly integrated with NuxtHub and Nuxt UI Pro. Excited to see some of you supporting my work!
👉🏻 Create fully-managed RAG pipelines to power your Nuxt AI applications with accurate and up-to-date information.
💡 Nuxt Tip: Data Fetching Improvements
Nuxt 3.17 introduced significant improvements to the data composables useAsyncDatauseAsyncData and useFetchuseFetch.
All calls to these composables with the same key now share the underlying refs, ensuring consistency across your application:
1// 1️⃣ ComponentA.vue2const { data: users, pending } = useAsyncData('users', fetchUsers)34// 2️⃣ ComponentB.vue5// This will reference the same data state as ComponentA6const { data: users, status } = useAsyncData('users', fetchUsers)7// When either component refreshes the data, both will update consistently
You can now use computed refs, plain refs, or getter functions as keys:
1const userId = ref('123')2const { data: user } = useAsyncData(3 computed(() => `user-${userId.value}`),4 () => fetchUser(userId.value)5)67// Changing the userId will automatically trigger a new data fetch8// and clean up the old data if no other components are using it9userId.value = '456'
Multiple components watching the same data source will now trigger only a single data fetch when dependencies change:
1// In multiple components:2const { data } = useAsyncData(3 'users', 4 () => $fetch(`/api/users?page=${route.query.page}`),5 { watch: [() => route.query.page] }6)78// When route.query.page changes, only one fetch operation will occur9// All components using this key will update simultaneously
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...
Read this on my blog We made it to 200! Thanks for reading and supporting me over the last few years, it means a lot to me. Tomorrow is the last day of the Composable Design Patterns course launch and the 35% off discount. If you were hoping to pick it up, don't forget to check it out! As always, I've got some tips and links for you, and a new podcast episode. Enjoy, and have a great week! — Michael 🔥 Default Content with Slots You can provide fallback content for a slot, in case no content is provided: < !-- Child.vue --> < template > < div > < slot > Hey! You forgot to put something in the slot! < / slot > < / div > < / template > This content can be anything, even a whole complex component that provides default behaviour: < !-- Child.vue --> < template > < div > < slot name = "search" > < !-- Can...
If you're using Vue 3, you're probably using composables. But other than using VueUse where you can, how do you get the most out of them? Over the past few years I've been slowly putting together a list of patterns and best practices for how to write composables in the best way. I've spent hours reading the source code of VueUse (one of the best — but most time-consuming — ways to learn it). I've read articles, listened to talks, and written lots and lots of my own code. I ended up with 15 different patterns, and each one will help you to write better composables. I've condensed and put all of these composables together into a course — Composable Design Patterns. Get Composable Design Patterns now. Because this is the launch, it's on sale for 35% off until Thursday. For each of the 15 patterns in this course, you'll get: A concise overview that tells you when and how to use it, along with variations and edge cases ...
评论
发表评论