-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Description
I think that the setup way of building a store will be the future. I would love to shift towards that in the docs.
Currently in the docs
https://pinia.vuejs.org/introduction.html#basic-example
export const useCounterStore = defineStore('counter', () => {
const count = ref(0)
function increment() {
count.value++
}
return { count, increment }
})Comprehensive example
import { ref, computed } from 'vue'
import { defineStore } from 'pinia'
export const useStoreCounter = defineStore('counter', () => {
// STATES
const count = ref(0)
// GETTERS
const isEven = computed(() => {
return count.value % 2 === 0
})
const messageIfEven = computed(() => {
return (message) => {
if (!isEven.value) return
return message
}
})
// ACTIONS
function increment() {
count.value++
}
return { count, isEven, messageIfEven, increment }
})Notes
- I think not everyone will remember the syntax for the imports so I added them.
- I also added comments to make it really clear what is states, getters and actions.
isEvenis a getter without arguments which works similar to a value.messageIfEven(message)which works more like a method. It takes an argument and also uses the other getterisEven.- In the future we can get rid of
.valueafter values and computed properties by using$ref(), but now we still has to deal withref().
I hope this can help someone.
adambergman, aparajita, fmeinhold, arnoson, songololo and 12 morecoolhome, tito, MitchSRobinson, extrem7, jxjj and 3 more
Metadata
Metadata
Assignees
Labels
No labels