👉🏻 This "Quick Start with Pinia" lesson on Pinia breaks down this powerful Vue state management library, showing you how to efficiently manage data across components.
👉🏻 This library is written using Vue 3 with Composition API, and the components are designed and written in a traditional Vue way possible, with full TypeScript support.
👉🏻 Lightweight and framework independent but offers Vue 2/3, Alpine.js and Svelte integrations.
🔥 Vue Tip: Avoid Side Effects in Computed Properties
It is considered bad practice to introduce side effects inside computed properties and functions because it makes the code unpredictable and hard to understand.
What is a side effect? In the context of computed properties, a side effect is a modification of the state's global state or the internal component state.
Let's take a look at an example with side effects:
1<script setup lang="ts">2import { computed, ref } from 'vue'34const firstName = ref('Michael')5const lastName = ref('Hoffmann')6const array = ref([])78const fullName = computed(() => {9 firstName.value = 'Mike' // side effect10 return `${firstName.value} ${lastName.value}`11})1213const reversedArray = computed(() => array.value.reverse()) // side effect, original array is mutated14</script>
Now let's change the code and remove the side effects:
1<script setup lang="ts">2import { computed, ref } from 'vue'34const firstName = ref('Michael')5const lastName = ref('Hoffmann')6const array = ref([])78const fullName = computed(() => `${firstName.value} ${lastName.value}`)9const reversedArray = computed(() => array.value.slice(0).reverse()) // .slice creates a copy of the array10</script>
Now the code is predictable and easy to understand. The computed properties fullNamefullName and reversedArrayreversedArray only depend on the values of firstNamefirstName, lastNamelastName, and arrayarray. They don't modify the global state or the internal component state.
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...
Tuesday, August 20, 2024 My linkblog, which posts to the Links tab on Scripting News, as well as Bluesky , Mastodon and RSS , now also posts to Twitter and Threads . # Today would have been my mother's 92nd birthday. She died in 2018, and I still haven't, deep inside, fully gotten the message that she's gone. Probably the most significant person in my life. I find most of my adult relationships can be traced back to my relationship with her. # Ignore the NY Times # When President Biden took the stage last night at the DNC, I had a moment of buyer's remorse. He looked so good in his black suit, and the pictures of the new candidates, and their spouses, looked comical in comparison to the president who was about to speak. # Why did Walz have a permanent frown on his face. I find his presence next to Harris is almost always awkward. He's taller, and moves a lot. I noticed this with Sanders when he was debating Clinton in 2016. Sh...
Tuesday, June 27, 2023 Manton Reece writes that we should welcome Facebook's new cage fighting platform, not block it. I'm neutral. I don't know what it is. I seriously doubt it'll be exciting. And I think they should stop calling themselves Meta, that's stupid and dishonest. They're Facebook. They need to own that, because it's their actual name. # I am celebrating the imminent arrival of Facebook's thing, whatever it is, by buying a domain . It's what I do. Some people collect shoes. Other people classic cars or vinyl records. # My friend Doc # Doc is about to lose his Harvard blog, and he's stuck in California with too much to do and is afraid it will slip through is fingers if he has to prioritize his time so as not to be able to save it. I wrote him this email. # A perfect storm. # I had something smaller happen when I was moving out of my house in Berkeley in 2010. # My server was ...
评论
发表评论