export default {
setup(props, context) {
console.log(props.title)
console.log(context.attrs)
console.log(context.slots)
console.log(context.emit)
return {
}
}
}
<script setup>
const count = ref(0)
const increment = () => count.value++
</script>
import { ref } from 'vue'
const count = ref(0)
console.log(count.value)
count.value++
console.log(count.value)
import { reactive } from 'vue'
const state = reactive({
count: 0,
message: 'Hello'
})
state.count++
import { reactive, toRef, toRefs } from 'vue'
const state = reactive({
foo: 1,
bar: 2
})
const fooRef = toRef(state, 'foo')
const stateRefs = toRefs(state)
import { reactive, readonly } from 'vue'
const original = reactive({ count: 0 })
const copy = readonly(original)
original.count++
copy.count++
import { ref, computed } from 'vue'
const count = ref(1)
const double = computed(() => count.value * 2)
const plusOne = computed({
get: () => count.value + 1,
set: (val) => {
count.value = val - 1
}
})
import { ref, watch } from 'vue'
const count = ref(0)
watch(count, (newValue, oldValue) => {
console.log(`count: ${oldValue} -> ${newValue}`)
})
const firstName = ref('')
const lastName = ref('')
watch([firstName, lastName], ([newFirst, newLast], [oldFirst, oldLast]) => {
console.log(`Name changed`)
})
const state = reactive({ count: 0 })
watch(
() => state.count,
(newValue, oldValue) => {
console.log(`count: ${oldValue} -> ${newValue}`)
}
)
import { ref, watchEffect } from 'vue'
const count = ref(0)
watchEffect(() => {
console.log(count.value)
})
const stop = watchEffect(() => {
console.log(count.value)
})
stop()
import {
onBeforeMount,
onMounted,
onBeforeUpdate,
onUpdated,
onBeforeUnmount,
onUnmounted
} from 'vue'
export default {
setup() {
onBeforeMount(() => {
console.log('Before Mount')
})
onMounted(() => {
console.log('Mounted')
})
onBeforeUpdate(() => {
console.log('Before Update')
})
onUpdated(() => {
console.log('Updated')
})
onBeforeUnmount(() => {
console.log('Before Unmount')
})
onUnmounted(() => {
console.log('Unmounted')
})
}
}
import { provide } from 'vue'
export default {
setup() {
provide('message', 'Hello from parent')
}
}
import { inject } from 'vue'
export default {
setup() {
const message = inject('message')
return { message }
}
}