vue3 modifier
vue3 modifier 是什么?
modifier 中文意思为修饰符.
在vue3中主要是体现在v-model上,vue3允许我们添加自定义修饰符。
比如说这样:
<template>
<img alt="Vue logo" src="./assets/logo.png" />
<!-- <HelloWorld msg="Welcome to Your Vue.js App" /> -->
<Test v-model:userinput.trimall="userinput"></Test>
<p>{{userinput}}</p>
</template> <script setup>
import HelloWorld from "./components/HelloWorld.vue";
import Test from "./components/Test.vue";
import {ref} from 'vue'
const userinput = ref(''); </script>
我们自定义的修饰符在子组件中如何获取呢?其实很简单,
我们v-model:msg.trimall 传递到子组件中一共有两个属性,如下所示:
const props = defineProps({
userinput: {
type: String,
default: "",
},
userinputModifiers: {
type: Object,
default: () => ({}),
},
});
我们的子组件的自定义修饰符全部存放在userinputModifiers这个对象里面,这个对象key组成是 属性+Modifiers,所以
<Test v-model:something.tom="value"></Test>
我们的子组件就会收到除去something属性之外额外的属性 somethingModifiers。
接着上面的说下去,
userinputModifiers 会有一个属性是你的修饰符名称,比如:
所以我们就可以根据这个值做我们想做的事情了.
代码示例如下:
App.vue
<template>
<img alt="Vue logo" src="./assets/logo.png" />
<!-- <HelloWorld msg="Welcome to Your Vue.js App" /> -->
<Test v-model:userinput.trimall="userinput" ></Test>
<p>{{userinput}}</p>
</template> <script setup>
import HelloWorld from "./components/HelloWorld.vue";
import Test from "./components/Test.vue";
import {ref} from 'vue'
const userinput = ref(''); </script> <style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
Test.vue
<template>
<div>
<input :value="userinput" @input="onInput" type="text" />
</div>
</template> <script setup>
import { getCurrentInstance, defineProps, toRef, useAttrs } from "vue"; const props = defineProps({
userinput: {
type: String,
default: "",
},
userinputModifiers: {
type: Object,
default: () => ({}),
},
}); const userinput = toRef(props, "userinput");
const instance = getCurrentInstance(); console.log("value:", props);
function onInput({ target }) {
var value = props.userinputModifiers.trimall
? target.value.replace(/\s/g, "")
: target.value;
instance.emit("update:userinput", value);
}
</script>
注:
在vue3.2之前 还是有 useContext 这个函数的,之后这个函数被废弃了,取而代之的是 useAttrs(主要用来获取一些非props属性) 和 useSlots (如果你不编写JSX或者TSX,这个函数你应该用不到)
是故学然后知不足 23:29:33
vue3 modifier的更多相关文章
- vue2升级vue3指南(二)—— 语法warning&error篇
本文总结了vue2升级vue3可能会遇到的语法警告和错误,如果想知道怎样升级,可以查看我的上一篇文章:vue2升级vue3指南(一)-- 环境准备和构建篇 Warning 1.deep /deep/和 ...
- [转]Java反射之如何判断类或变量、方法的修饰符(Modifier解析)
Java针对类.成员变量.方法,有很多修饰符,例如public.private.static.final.synchronized.abstract等,这些修饰符用来控制访问权限或其他特性. 本文就用 ...
- jmeter 中的 HTTP URL Re-writing Modifier
URL rewriting modifier,因为tomcat的session实现不是通过cookie的,而是通过session id的,就是说,用户登录有了session之后,tomcat就会维护一 ...
- 【转载】#273 - Parameter Modifier Summary
Here's a summary of the different parameter modifiers and how the behavior changes for each, when us ...
- 解决Deprecated: preg_replace(): The /e modifier is deprecated, use
使用php5.5运行ecshop的时候出现如下错误Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace ...
- 7.modifier插件的自定义和使用
1.在plugins下面创建一个文件 modifier.changeDate.php 编写: <?php function smarty_modifier_changeDate($utime,$ ...
- Sample Code for Qp_preq_pub.Price_request Api to Simulate an Ask for Promotion Modifier
DECLARE p_line_tbl QP_PREQ_GRP.LINE_TBL_TYPE; p_qual_tbl QP_PREQ_GRP.QUAL_TBL_TYPE; p_line_attr_tbl ...
- vue3+typescript引入外部文件
vue3+typescript中引入外部文件有几种方法 (eg:引入echarts) 第一种方法: 1 indext.html中用script引入 <div id="app" ...
- 预计2019年发布的Vue3.0到底有什么不一样的地方?
摘要: Vue 3.0预览. 原文:预计今年发布的Vue3.0到底有什么不一样的地方? 作者:小肆 微信公众号:技术放肆聊 Fundebug经授权转载,版权归原作者所有. 还有几个月距离 vue2 的 ...
- java反射(java.lang.reflect)---java.lang.reflect.Modifier中状态码
1. 详情请看jvm(虚拟机)规范 java.lang.reflect.Modifier public static final int ABSTRACT 1024 public static fin ...
随机推荐
- 洛谷P2430
还是很容易能看出来是01背包 #include<iostream> #include<utility> using namespace std; typedef long lo ...
- KubeCube 新增版本转换:K8s 尝鲜再也不用担心影响老版本了
多租户可视化 K8s 管理平台KubeCube近日迎来了新版本的发布,新版本增加了 K8s 版本转化.HNC GA 版本适配.审计信息国际化.warden 主动上报模式,为集群和项目设置 Ingres ...
- 从输入URL到页面展示到底发生了什么?--01
在浏览器中输入一个URL并按下回车键后,会发生一系列复杂且有条不紊的步骤,从请求服务器到最终页面展示在你的屏幕上.这个过程可以分为以下几个关键步骤: URL 解析 DNS 查询 TCP 连接 发送 H ...
- Java 根据XPATH批量替换XML节点中的值
根据XPATH批量替换XML节点中的值 by: 授客 QQ:1033553122 测试环境 JDK 1.8.0_25 代码实操 message.xml文件 <Request service=&q ...
- Sonar 扫描之SonarScanner介绍
Sonar扫描之SonarScanner介绍 SonarScanner用于在构建系统没有指定scanner时使用. 项目配置 在你的项目根目录中创建一个名为 sonar-project.propert ...
- Git的存储原理
目录 Git 设计原理 Git vs SVN Git 存储模型 .git 目录结构 Git 基本数据对象 Git 包文件 Git 引用 Git 设计原理 概括的讲,Git 就是一个基于快照的内容寻址文 ...
- mysql索引失效的情况七字口诀:“模型数空运最快”
mysql索引失效的情况 七字口诀:"模型数空运最快" 模:使用like进行模糊查询的时候,以百分号%开头的,索引就会失效. 型:代表数据类型,数据类型错误了,索引也会失效. 数: ...
- 【Java】Vue-Element-Admin 嵌入Druid监控面板
我看到若依做了Druid面板的嵌入,我自己的项目干脆也做一个 一.后台服务SpringBoot: Druid配置项: spring: datasource: url: jdbc:mysql://127 ...
- 使用 C# 和 ONNX 來玩转Phi-3 SLM
LLM 席卷世界刷新 AI 的认知之后,由于 LLM 需要的硬件要求实在太高,很难在普通设备上运行,因此 SLM 逐漸受到重視,Phi-3 SLM 是由 Microsoft 所开发的模型,可以在你的电 ...
- 进程的CPU绑定是否有意义 —— 进程的 CPU 亲和性
好多年前就学习过 进程的 CPU 亲和性这个概念,说直白些就是CPU的进程绑定,也就是指定某个进程绑定到某个CPU核心上,以此提高进程切换时缓存的命中率,加快进程的运算速度. 虽然在编程的时候中会遇到 ...
