码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Vue中v-model原理


    Vue中v-model原理

      • 父子组件通信
      • 改变变量名称和方法名称
      • 简写向子组件通信
      • 简写子组件

    通过父子组件通信揭开v-model实现原理

    父子组件通信

    App.vue

    <template>
      <p>父组件:{{num}}</p>
      <hello-world :num="num" @change="change"></hello-world>
    </template>
    
    <script setup>
    import {ref} from "vue";
    import HelloWorld from "./components/HelloWorld.vue";
    
    const num = ref(0);
    function change(value){
      num.value = value;
    }
    
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    HelloWorld.vue

    <template>
      <p>子组件:{{numProps.num}}</p>
      <button @click="add">add</button>
    </template>
    
    <script setup>
    const numProps = defineProps({
      num:Number
    });
    const emit = defineEmits("change");
    function add(){
      emit('change',numProps.num+1);
    }
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    改变变量名称和方法名称

    App.vue

    <template>
      <p>父组件:{{num}}</p>
      <hello-world :modelValue="num" @update:modelValue="change"></hello-world>
    </template>
    
    <script setup>
    import {ref} from "vue";
    import HelloWorld from "./components/HelloWorld.vue";
    
    const num = ref(0);
    function change(value){
      num.value = value;
    }
    
    </script>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    HelloWorld.vue

    <template>
      <p>子组件:{{numProps.modelValue}}</p>
      <button @click="add">add</button>
    </template>
    
    <script setup>
    const numProps = defineProps({
      modelValue:Number
    });
    const emit = defineEmits("update:modelValue");
    function add(){
      emit('update:modelValue',numProps.modelValue+1);
    }
    </script>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    简写向子组件通信

    App.vue

    <template>
      <p>父组件:{{num}}</p>
      <hello-world v-model:="num"></hello-world>
    </template>
    
    <script setup>
    import {ref} from "vue";
    import HelloWorld from "./components/HelloWorld.vue";
    const num = ref(0);
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    简写子组件

    HelloWorld.vue

    <template>
      <input type="text"
             :value="modelValue"
             @input="(e) => $emit('update:modelValue',e.target.value)"/>
    <!--  <input type="text"
             :value="modelValue"
             @input="$emit('update:modelValue',$event.target.value)"/>-->
    </template>
    
    <script setup>
    defineProps({
      modelValue:Number
    });
    defineEmits("update:modelValue");
    
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    vue3的element-plus的el-dialog的样式修改无效问题
    Spring Boot 使用 Passay 库的自定义密码验证器
    java计算机毕业设计网课系统源码+系统+mysql数据库+LW文档+部署文件
    Uncaught TypeError: Cannot use ‘in‘ operator to search for ‘path‘ in undefined
    【AI视野·今日NLP 自然语言处理论文速览 第五十二期】Wed, 11 Oct 2023
    Mpeg-glycyrrhetinic acid(GA)/Isothiocyanate/Isocyanate甲氧基-聚乙二醇-甘草次酸/异硫氰酸酯/异硫氰酸盐
    java 实现给PDF、PPT添加水印
    安踏携手华为运动健康共同验证冠军跑鞋 创新引领中国体育
    【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
    UE5 运行时生成距离场数据
  • 原文地址:https://blog.csdn.net/weixin_42202992/article/details/133799664
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号