1. // 父组件
    2. <template>
    3. <div>
    4. <!-- 使用Hello组件需要提供msg,Hello组件提供了send事件给父组件 -->
    5. <Hello :msg="msg" @send="test"/>
    6. </div>
    7. </template>
    8. <script>
    9. import {defineComponent, ref} from "vue";
    10. import Hello from './Hello.vue'
    11. export default defineComponent({
    12. name: "App",
    13. components: {
    14. Hello,
    15. },
    16. setup() {
    17. const msg = ref('hello');
    18. const test =(data)=> {
    19. console.log(data);
    20. }
    21. return {
    22. msg,
    23. test
    24. };
    25. },
    26. });
    27. </script>
    28. // 子组件
    29. <template>
    30. <div>
    31. <h3>{{ msg }}</h3>
    32. <!-- 通过emit发送数据给父组件 -->
    33. <button @click="emit('send',22222222222)">发送信息</button>
    34. </div>
    35. </template>
    36. <script>
    37. import { defineComponent, toRefs } from "vue";
    38. export default defineComponent({
    39. props: {
    40. msg: {
    41. type: String,
    42. },
    43. },
    44. /**
    45. * @param props父组件传过来的属性
    46. * @param context上下文对象
    47. */
    48. setup(props, context) {
    49. console.log("上下文对象", context);
    50. const { msg } = toRefs(props);
    51. // 把emit方法从context对象结构出来
    52. const { emit } = context;
    53. return {
    54. msg,
    55. emit
    56. };
    57. },
    58. });
    59. </script>