I'm just practicing some Vue3 props handling and I noticed something interesting.
I have this useCounter
function that simply takes a value and returns a new one.
interface Counter {
incrementCounter: () => number;
decrementCounter: () => number;
}
export function useCounter(): Counter {
const incrementCounter = (num: number): number => {
return ++num;
};
const decrementCounter = (num: number): number => {
return --num;
};
return { incrementCounter, decrementCounter };
}
I'm using that method in a Adder
component which receives the counter
prop from the parent.
<template>
<button @click="handleClick">Increment</button>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
import { useCounter } from "../functions/useCounter"
export default defineComponent({
props: {
counter: {
type: Number,
}
},
setup(props, { emit }) {
const { incrementCounter } = useCounter()
const handleClick = (): void => {
emit('update:counter', incrementCounter(props.counter))
}
return { handleClick }
}
})
</script>
My real question is why doing ++num
works but num++
doesn't? I ask because I was going to give up on this approach until I decided to experiment, but can't understand why it works