• Vue3 defineProps使用


    MyTag.vue

    <script setup>
    import { ref, nextTick, defineProps, defineEmits } from "vue";
    const props = defineProps({
      flag: Boolean,
      title: String,
    });
    // 写成这样也可以
    // const props = defineProps(["flag", "title"]);
    
    const emit = defineEmits(["changeFlag"]);
    const inp = ref(null);
    const newTitle = ref("");
    const changeName = () => {
      console.log("props", props);
      emit("changeName", newTitle.value);
      emit("changeFlag", !props.flag);
    };
    const dblfun = () => {
      newTitle.value = props.title;
      emit("changeFlag", !props.flag);
      nextTick(() => {
        inp.value.focus();
      });
    };
    const funBlur = () => {
      console.log("Blur" + newTitle.value);
      emit("changeFlag", true);
    };
    </script>
    
    <template>
      <div class="app">
        <div v-show="flag" @dblclick="dblfun">
          <h1>{{ title }}</h1>
        </div>
        <div v-show="!flag">
          <input
            ref="inp"
            v-model="newTitle"
            @keyup.enter="changeName"
            @blur="funBlur"
            type="text"
          />
        </div>
      </div>
    </template>
    
    <style scoped>
    .son1 {
      width: 100%;
      height: 150px;
      border: 3px red solid;
    }
    </style>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    父组件
    App.vue

    <script setup>
    import MyTag from "./components/MyTag.vue";
    import { ref } from "vue";
    const flag = ref(true);
    const title = ref("slx");
    const changeFlag = (tt) => {
      flag.value = tt;
    };
    const changeName = (tt) => {
      console.log("tt", tt);
    
      title.value = tt;
    };
    </script>
    
    <template>
      <div class="app">
        <MyTag
          @changeFlag="changeFlag"
          @changeName="changeName"
          :flag="flag"
          :title="title"
        ></MyTag>
      </div>
    </template>
    
    <style scoped>
    .son1 {
      width: 100%;
      height: 150px;
      border: 3px red solid;
    }
    </style>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
  • 相关阅读:
    10 分钟教会你如何看懂 MySQL 执行计划
    Hexagon_V65_Programmers_Reference_Manual (51)
    探讨Java死锁的现象和解决方法
    ML Design Patterns——Models and Framework
    Draco - glTF模型压缩利器
    K8s上安装gitlab-ce
    公众号内容拓展学习笔记(2022.7.5)
    Chatgpt人工智能对话源码系统分享 带完整搭建教程
    HCIP知识点
    组件传参及Vuex基础
  • 原文地址:https://blog.csdn.net/weixin_63681863/article/details/133513756