文章目录

  • p12 条件渲染v-if与v-show
  • p13 列表渲染v-for
  • p14 事件与参数和事件修饰符
  • p15 表单的数据双向绑定
  • p16 组件 与 父组件传递数据给子组件 -- 方式props
  • p17 通过自定义事件将子组件数据传递给父组件
  • p18 Vue3 生命周期钩子

p12 条件渲染v-if与v-show

v-show 会在 DOM 渲染中保留该元素;v-show 仅切换了该元素上名为 display 的 CSS 属性。

v-show 不支持在 <template> 元素上使用,也不能和 v-else 搭配使用。

<template><h1 v-if="user == 'vip'">欢迎会员登录</h1><!-- <h1 v-else>充值后,成为会员</h1> --><button @click="toggleUser">vip过期</button><h1 v-show="isShow">切换显示内容</h1><button @click="toggleShow">切换</button>
</template><script>
export default {data() {return {user: "vip",isShow: true,num: 1,};},methods: {toggleUser() {if (this.num % 2 !== 0) {this.user = "!vip";} else {this.user = "vip";}this.num++;},toggleShow() {this.isShow = !this.isShow;},},
};
</script>

p13 列表渲染v-for

<template><ol><li v-for="(item, index) in news" :key="index">{{ item }}</li></ol><ul><li v-for="(item, index) in newsObj" :key="index">{{ item.title }} {{ item.tag }} {{ item.num }}</li></ul><ol><li v-for="(item, i) in person" :key="i">{{ item }}</li></ol><ul><li v-for="(item, i) of person" :key="i">{{ item }}</li></ul>
</template><script>
export default {data() {return {news: ["#怎样才能释怀曾经深爱的人#","#你会因为什么原因换手机#","#怎样才是有效化妆#","#你有彻底改变生活方式的勇气吗#",],newsObj: [{title: "#怎样才能释怀曾经深爱的人#",tag: "沸",num: "450万",},{title: "你有彻底改变生活方式的勇气吗#",tag: "沸",num: "45万",},],person: {name: "zhagnsan",age: 28,sex: "man",},};},
};
</script>

p14 事件与参数和事件修饰符

<template><!-- 绑定事件,不需要参数 --><h1 @click="increment">{{ num }}</h1><!-- 绑定事件 直接处理表达式 --><h1 @click="num += 7">{{ num }}</h1><!-- 绑定事件,传递参数 --><h1 @click="addThree(3)">{{ num }}</h1><!-- 绑定事件,传递事件对象和参数 --><h1 @click="incrementTen(10, $event)">{{ num }}</h1><!-- <h1 @click="incrementFive($event, 10)">{{ num }}</h1> // 这种是错误的, $event只能放在第二个 --><!-- @就是v-on的缩写 --><!-- 一个事件绑定多个处理函数 --><h1 @click="addThree(3), changeColor()" :style="{ background: color }">{{ num }}</h1><!-- 事件修饰符 --><!-- .once 事件只触发一次 --><h1 @click.once="incrementTen(20, $event)">{{ num }}</h1><!-- 阻止事件冒泡.stop  阻止默认事件.prevent --><!-- 按键修饰符.enter tab delete esc space up down left right--><input type="text" @keydown.enter="searchEevent" /><!-- 系统修饰符.ctrl/.alt/.shift/.meta(window) --><!-- 鼠标按键修饰符 .left/.right/.middle -->
</template><script>
export default {data() {return {num: 2,color: "red",};},methods: {increment() {this.num += 2;},incrementTen(number, event) {console.log(event);this.num += number;},// incrementFive(event, number) {//   console.log(event);//   this.num += this.number;// },addThree(number) {this.num += number;},changeColor() {this.color = "green";},searchEevent() {console.log("执行了回车搜索");},},
};
</script>

p15 表单的数据双向绑定

<template><!-- 文本 --><input type="text" v-model="message" placeholder="edit me" /><p>Message is {{ message }}</p><!-- 多行文本 --><span>Multiline message is</span><p>{{ message }}</p><textarea v-model="message" placeholder="请输入"></textarea><!-- 单一的复选框,绑定布尔类型 false <-> true--><input type="checkbox" v-model="checked" id="checkbox" /><label for="checkbox">{{ checked }}</label><!-- 多个复选框 绑定到同一个数组或集合 --><div>checked name: {{ fruits }}</div><input type="checkbox" id="apple" value="苹果" v-model="fruits" /><label for="apple">苹果</label><input type="checkbox" id="pear" value="梨" v-model="fruits" /><label for="pear">梨</label><input type="checkbox" id="banana" value="香蕉" v-model="fruits" /><label for="banana">香蕉</label><input type="checkbox" id="orange" value="橙子" v-model="fruits" /><label for="orange">橙子</label><!-- 单选按钮 --><div>Picked : {{ picked }}</div><input type="radio" id="man" value="男" v-model="picked" /><label for="man">男</label><input type="radio" id="women" value="女" v-model="picked" /><label for="women">女</label><!-- 单个选择器 --><div>Selected: {{ city }}</div><select v-model="city"><option disabled value="">请选择一个城市</option><option value="北京">北京</option><option value="上海">上海</option><option value="广州">广州</option><option value="深圳">深圳</option></select><!-- 选择器 可多选 --><div>Selected More: {{ citys }}</div><select v-model="citys" multiple><option disabled value="">请选择一个城市</option><option value="北京">北京</option><option value="上海">上海</option><option value="广州">广州</option><option value="深圳">深圳</option></select><!-- 单个选择器v-for渲染 --><div>Selected level: {{ level }}</div><select v-model="level"><option v-for="item in options" :value="item.value">{{ item.title }}</option></select><!-- 值绑定 --><input type="checkbox" v-model="checked1" true-value="yes" false-value="no" /><h1>{{ checked1 }}</h1><!-- 修饰符 .lazy --><!-- 在 "change" 事件后同步更新而不是 "input" --><input v-model.lazy="msg" />{{ msg }}<!-- .number 用户输入自动转换为数字 --><input v-model.number="age" /><div>{{ age }}{{ typeof age }} number</div><input v-model="ageCopy" /><div>{{ ageCopy }}{{ typeof ageCopy }} string</div><div><!--默认自动去除用户输入内容中两端的空格  --><p>.trim</p><input v-model.trim="msgtrim" />{{ msgtrim }}</div>
</template><script>
export default {data() {return {msgtrim: "",ageCopy: 0,age: 0,msg: "111",checked1: "",message: "",checked: false,fruits: [],picked: "",city: "",citys: [],level: "A",options: [{ value: "A", title: "优秀" },{ value: "B", title: "良好" },{ value: "C", title: "一般" },],};},
};
</script>

p16 组件 与 父组件传递数据给子组件 – 方式props

父组件App.vue

<template><!-- 通过props 传递给子组件数据 --><Header :contnet="msg" />
</template><script>
import Header from "./components/Header.vue";
export default {components: {Header,},data() {return {msg: "父组件准备传给子组件header的数据",};},
};
</script>

子组件Header.vue

<template><header><p>这里是头部组件</p><p>{{ contnet }}</p></header>
</template>
<script>
export default {//   props: ["contnet"], 这一句的效果 跟下面一样 都显示出来了props: {contnet: String,},
};
</script>

p17 通过自定义事件将子组件数据传递给父组件

子组件Login.vue

<template><input type="text" v-model="username" /><button @click="submit">将数据提交给父组件</button>
</template><script>
export default {data() {return {username: "",};},methods: {submit() {// 触发自定义事件 $emit(事件名称, 发送的事件参数)this.$emit("sendParentMsg", this.username);},},
};
</script>

父组件App.vue

<template><Login @sendParentMsg="getChildMsg" /><p>从子组件中拿到的数据:{{ msg }}</p>
</template><script>
import Login from "./components/Login.vue";
export default {components: { Login },data() {return {msg: "",};},methods: {getChildMsg(value) {this.msg = value;},},
};
</script>

p18 Vue3 生命周期钩子

npm init vite-app demo04

 beforeCreate() {console.log("beforeCreate,初始化数据之前");},created() {console.log("created,数据初始化之后");},beforeMount() {console.log("beforeMount,挂载渲染之前");},mounted() {console.log("mounted,挂载渲染之后");},beforeUpdate() {console.log("beforeUpdate,更新之前");},updated() {console.log("updated,更新之后");},beforeUnmount() {console.log("beforeDestory,销毁之前");},unmounted() {console.log("destoryed, 销毁完毕");},

Vue3基础——条件渲染、列表渲染、事件事件修饰符、父子组件间的数据传递、生命周期钩子相关推荐

  1. Vue多组件切换,并相互传值(在created和mounted生命周期钩子函数中渲染数据的区别)

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>< ...

  2. jquery 监听td点击事件_VUE @hook浅析(监听子组件的生命周期钩子) - 古兰精

    一.前言 接触hook是从webhook开始接触的,webhook是git的一个扩展服务,可以在仓库接收到push/commit事件并发送http request至一个开发者可以自定义的URL.通过这 ...

  3. 我的 Vue.js 学习日记 (七) - 事件与修饰符

    上节回顾 上节写了一个v-for与table的简单互动,脑子里回忆一下,嗯 ~ 还是回去再看一遍吧... 本节目标 今天看一下事件与修饰符,并且把有疑惑的地方敲一遍,亲眼看一下输出结果.由于时间有限, ...

  4. 事件处理-注册时间 // 事件处理-修饰符 // 事件处理-键盘事件的修饰符 // 事件处理-系统修饰符 // 事件处理-鼠标修饰符

    事件处理-注册事件 <!DOCTYPE html> <html lang="en"><head><meta charset="U ...

  5. Vue3父子组件间传参通信

    Vue3 父子组件间通信 前言 一.父传子 defineProps 二.子传父 defineEmits 三.子组件暴露属性给父组件 defineExpose 四.依赖注入Provide / Injec ...

  6. VUE3 之 多个 v-model 绑定及 v-model 修饰符的使用

    目录 1. 概述 2. 多个 v-model 绑定 3. v-mode 修饰符 4. 综述 5. 个人公众号 1. 概述 洛克定律告诉我们: 当我们的目标很远大,远到我们都看不到终点时,放弃几率就会很 ...

  7. JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配

    JAVA基础-栈与堆,static.final修饰符.内部类和Java内存分配 发布时间: 2013/01/12 22:29 QQ空间 新浪微博 腾讯微博 人人网 豆瓣网 百度空间 百度搜藏 开心网 ...

  8. Vue3 生命周期钩子函数

    一.Vue3生命周期钩子 setup() : 开始创建组件之前,在 beforeCreate 和 created 之前执行,创建的是 data 和 method onBeforeMount() : 组 ...

  9. vue3生命周期钩子函数

    vue2生命周期钩子函数视图 vue3生命周期钩子函数视图 代码 // 通过配置项 beforeCreate () { console.log('beforeCreate'); }, created ...

最新文章

  1. 英特尔联合Facebook研发AI芯片:CPU老厂能在AI时代打好翻身仗吗
  2. 为了快一点为什么却要慢一点
  3. 《史上最简单的 SpringCloud 教程》系列
  4. 【Machine Learning 一】监督学习与无监督学习
  5. 字节跳动mysql面试题_刚面完的字节跳动java研发面试题整理(含答案):线程+MySQL+Spring+JVM...
  6. python使用缩进来体现-Python使用缩进来体现代码之间的逻辑关系。
  7. 七牛云:ckeditor JS SDK 结合 C#实现多图片上传。
  8. Visual Basic Script 程序参考手册-学习第1天:初步认识VBS,编写第一个Hello World程序,解决中文字符乱码问题,推荐参考书
  9. Java随机产生中文昵称
  10. 三次样条插值的缺点_三次样条插值函数
  11. html图片爆炸效果,HTML5特效图片爆炸效果点击后文字会炸开
  12. 控制天象,世间的最强者!
  13. [Python] 练习代码
  14. 什么是爬虫?有哪些用途
  15. 开篇鸿蒙谁为情种,曹雪芹  红楼梦引子    开辟鸿蒙,谁为情种?都只为风月情浓。 这句话什么意思 只要这句话的解释...
  16. 利用Python将视频文件转成语音文件
  17. 笔记(四)Home Assistant添加小米设备
  18. LAN IP,WAN IP和Global IP
  19. 微信运动的刷步思路+云部署
  20. SV,class学习笔记五、参数化类(parameterized class)

热门文章

  1. 淘宝搜索排序算法分析
  2. 反射型XSS攻击原理
  3. 基于vue和ElementUI时间选择控件的封装
  4. VMware vSphere常见问题汇总(十四)
  5. 计算机学家名言 英语,科学家英语名言
  6. 优朋普乐酝酿上市前融资 百度腾讯欲投互联网TV
  7. 使用网页源代码下载网络录播/回放/缓存视频
  8. 单工,半双工,全双工通讯
  9. 腾讯服务器显示未绑定扣费中,腾讯云费用账号欠费是否影响云服务资源使用
  10. 秒杀超卖 解决方案(史上最全)