setup语法糖
<template> <div>AppContent: {{ message }}</div> <button @click="changeMessage">修改message</button> <showInfo name="why" :age="18" @info-btn-click="infoBtnClick" ref="showInfoRef"> </showInfo> <showInfo></showInfo> <showInfo></showInfo> </template> <script setup> // 1.所有编写在顶层中的代码, 都是默认暴露给template可以使用 import { ref, onMounted } from 'vue' // 2.组件不需要再components里面注册了 import showInfo from './ShowInfo.vue' // 3.定义响应式数据 const message = ref("Hello World") console.log(message.value) // 4.定义绑定的函数 function changeMessage() { message.value = "你好啊, 李银河!" } function infoBtnClick(payload) { console.log("监听到showInfo内部的点击:", payload) } // 5.获取组件实例 const showInfoRef = ref() onMounted(() => { showInfoRef.value.foo() }) </script> <style scoped> </style>
<template> <div>ShowInfo: {{ name }}-{{ age }}</div> <button @click="showInfoBtnClick">showInfoButton</button> </template> <script setup> // 定义props const props = defineProps({ name: { type: String, default: "默认值" }, age: { type: Number, default: 0 } }) // 绑定函数, 并且发出事件 const emits = defineEmits(["infoBtnClick"]) function showInfoBtnClick() { emits("infoBtnClick", "showInfo内部发生了点击") } // 定义foo的函数 function foo() { console.log("foo function") } defineExpose({ foo }) </script> <style scoped> </style>
本文来自博客园,作者:杨建鑫,转载请注明原文链接:https://www.cnblogs.com/qd-lbxx/p/16620955.html