vue知识-04

计算属性computed

注意:

        1、计算属性是基于它们的依赖进行缓存的      
        2、计算属性只有在它的相关依赖发生改变时才会重新求值
        3、计算属性就像Python中的property,可以把方法/函数伪装成属性

        4、computed: { ... }

        5、计算属性必须要有返回值

基本使用:

<body>
<div id="app"><h1>普通函数---其他数据变化---》函数会重写计算</h1>年龄:<input type="text" v-model="age">姓名:<input type="text" v-model="name">{{getAge()}}<h1>计算属性</h1>年龄:<input type="text" v-model="age1">姓名:<input type="text" v-model="name1"><br>{{newAge}}<br>
</div>
</body>
<script>var vm = new Vue({el: '#app',data: {age: '',name: '',age1: '',name1: '',},methods: {getAge() {console.log('我执行了')return Number(this.age) + 10}},computed: {newAge() {console.log('我执行了--计算属性')return Number(this.age1) + 20}}})
</script>
</html>

首字母变大写:

<body>
<div id="app"><h1>首字母变大写</h1><input type="text" v-model="name"> ---》{{newName}}
</div>
</body>
<script>var vm = new Vue({el: '#app',data: {name: '',},methods: {},computed: {newName() {return this.name.substring(0, 1).toUpperCase() + this.name.substring(1)}}})
</script>

通过计算属性,重写过滤案例:

<body>
<div id="app"><h1>过滤案例</h1><input type="text" v-model="search"><ul><li v-for="item in newDataList">{{item}}</li></ul>
</div>
</body>
<script>var vm = new Vue({el: '#app',data: {search: '',dataList: ['a', 'at', 'atom', 'be', 'beyond', 'bee', 'c', 'cs', 'csrf'],},computed:{newDataList(){return  this.dataList.filter(item => item.indexOf(this.search) >= 0)}}})
</script>

监听属性watch

特点:只要属性发生变化,就会执行 函数

<body>
<div id="app"><h1>监听属性</h1><button @click="ordering='id'">按id排序</button><button @click="ordering='price'">按价格排序</button>
</div>
</body>
<script>var vm = new Vue({el: '#app',data: {ordering: ''},watch: {ordering() {console.log('我变了,向后端发送请求')console.log(this.ordering)}}})
</script>

生命周期钩子

# vue 组件的生命周期钩子函数:
    一个vue的组件,从创建开始到最后销毁会经历一些过程,每个过程都绑定了一个函数,当到这个过程的时候,这个函数就会执行
    面向切面编程:AOP
# 8个生命周期钩子函数:
    beforeCreate:组件创建之前实现这个:组件html,js--》html和js都是空的
    created:组件创建完成后:js就有值了,html还是空的  (向后端发送ajax请求)
    beforeMount:挂载模板之前,js有值,模板(html) 还是空的(向后端发送ajax请求)
    mounted:挂载完成:js有值,模板有值
    beforeUpdate:刷新之前执行:只要页面发送变化或js变量发生变化,就会触发它的执行
    updated:刷新之后执行
    beforeDestroy:被销毁之前执行  (资源清理性工作)
    destroyed:被销毁之后执行
# 实际用途:
        1、页面加载完成,向后端发请求拿数据:写在create中
         2、组件中有定时任务,组件销毁,要销毁定时任务


# 补充:定时器和延时器:

setTimeout( ()=>{console.log('延时器,3s后执行')
},3000)setInterval(()=>{console.log('每隔3s执行')
},3000)

组件介绍Vue.component

注意:

        1、组件是有模板,有js的 ,有方法的对象  

        2、组件和组件之间的变量,模板都是隔离的

        3、Vue.component( '组件名' {  })

        4、使组件,直接根据组件名使用即可   <Child></Child>

        5、data里是数据需写在return{ age:19,... }

 全局组件和局部组件:

        全局组件:1、 定义:Vue.component('Child',{})

                          2、使用,可以在任意位置使用   <Child></Child>

        局部:1、定义:var vm = new Vue({})

                   2、使用:只能用在被 当前组件管理的html(#app) 中,放在别的位置找不到

定义组件:

    Vue.component('Child',{template: `<div><h1>我是组件</h1><button @click="haneleClick">点我看美女</button><p>年龄是:{{ age }}</p></div>`,data() {return {age: 19}},methods: {haneleClick() {alert('美女')}}})

局部组件和全局组件

全局组件:<Lqz> </Lqz>

    // 1 定义全局组件Vue.component('Lqz', {template: `<div><h1>{{ name }}</h1><button @click="handleClick">点我换名字</button></div>`,data() {return {name: 'lqz'}},methods: {handleClick() {this.name = '彭于晏'}}})

局部组件: 是定义在组件内部,只能在当前组件中使用    <Child></Child>

<script>   // 全局组件Vue.component('Child', {template: `<div><Lqz></Lqz><Lqz></Lqz><Lqz></Lqz></div>`,// 局部组件components: {Lqz: {template: `<div><h2>我是局部组件</h2></div>`,data() {return {}},methods: {},}}})var vm = new Vue({el: '#app',data: {},methods: {handleClick() {alert('美女') }},})
</script>

组件间通信之父传子

使用自定义属性实现父传子:
        1、在父中定义变量  name='lqz'
        2、在子组件上 写自定义属性  <Child :name="name"></Child>
        3、在组件内部:props:['name']  # 可以接收多个
        4、在子组件内部,就可以使用插值,使用这个变量

<body>
<div id="app"><h1>组件通信之父传子:自定义属性</h1><p>父组件中得名字:{{name}}</p><div style="background-color: pink"><Child :name="name" yy="xx"></Child></div>
</div>
</body>
<script>// 子Vue.component('Child', {template: `<div><h2>我是Child组件</h2><h3>父组件传递给子组件的:{{ name }}=={{yy}}</h3></div>`,data() {return {}},props:['name','yy']})//父var vm = new Vue({el: '#app',data: {name:'lqz'},})
</script>

组件间通信之子传父

2、

<body>
<div id="app"><h1>组件通信之子传父:自定义事件</h1>子组件的值:{{p_name}}<div style="background-color: pink"><Child @myevent="handleEvent"></Child></div>
</div>
</body>
<script>// 子Vue.component('Child', {template: `<div><h2>我是Child组件</h2><input type="text" v-model="name">-->{{ name }}<button @click="handleSend">传给父亲</button></div>`,data() {return {name: ''}},methods: {handleSend() {this.$emit('myevent',this.name)}}})//父var vm = new Vue({el: '#app',data: {p_name: ''},methods: {handleEvent(name) {// name 是 子组件中调用  this.$emit('myevent',this.name) 传过来的// alert('美女')this.p_name=name  // 把子组件中传入的,赋值给父组件的p_name变量}}})
</script>

今日思维导图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/338220.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么大家都在学鸿蒙开发HarmonyOS?

随着HarmonyOS讨论的话题是越来越火热了&#xff0c;大家学习过程中难免也会想这么一个问题&#xff0c;学习HarmonyOS有哪些发展空间&#xff1f;为什么大家都在学鸿蒙开发HarmonyOS? 学习鸿蒙开发OpenHarmony可以满足市场需求&#xff0c;提升技术能力&#xff0c;并参与到…

《华夏教师》是什么级别的期刊?是正规期刊吗?能评职称吗?

《华夏教师》杂志对象主要面向中小学校长和各级教育界管理者&#xff0c;旨在为教育工作者和管理者提供国内外最新、最前沿的教育动态&#xff0c;剖析教育教学热点问题&#xff0c;展现学校教师风采而服务。 收录情况&#xff1a;知网万方维普收录 投稿方式&#xff1a;教育类…

vue3中路由的使用(详细讲解)

1、路由的简介 路由(route)&#xff1a;就是根据特定的规则将数据包或请求从源地址传输到目标地址的过程。 在前端或者vue3项目中路由主要用于构建单页面应用程序&#xff08;SPA&#xff09;&#xff0c;其中所有的页面都在同一个HTML文件中加载&#xff0c;通过JavaScript动…

动态内存管理的题目

数组串联 在leetcode上找的一题 &#xff1a; 给你一个长度为 n 的整数数组 nums 。请你构建一个长度为 2n 的答案数组 ans &#xff0c;数组下标 从 0 开始计数 &#xff0c;对于所有 0 < i < n 的 i &#xff0c;满足下述所有要求&#xff1a; ans[i] nums[i]ans[i…

C++学习笔记——对象的指针

目录 一、对象的指针 二、减少对象的复制开销 三、应用案例 游戏引擎 图像处理库 数据库管理系统 航空航天软件 金融交易系统 四、代码的案例应用 一、对象的指针 是一种常用的技术&#xff0c;用于处理对象的动态分配和管理。使用对象的指针可以实现以下几个方面的功…

Linux C/C++ 显示NIC流量统计信息

NIC流量统计信息是由操作系统维护的。当数据包通过NIC传输时&#xff0c;操作系统会更新相关的计数器。这些计数器记录了数据包的发送和接收数量、字节数等。通过读取这些计数器&#xff0c;我们可以获得关于网络流量的信息。 为什么需要这些信息? 可以使用这些信息来监控网络…

Mysql InnoDB行锁深入理解

Record Lock记录锁 Record Lock 称为记录锁&#xff0c;锁住的是一条记录。而且记录锁是有 S 锁和 X 锁之分的&#xff1a; 当一个事务对一条记录加了 S 型记录锁后&#xff0c;其他事务也可以继续对该记录加 S 型记录锁&#xff08;S 型与 S 锁兼容&#xff09;&#xff0c;…

win10提示“KBDSF.DLL文件缺失”,游戏或软件无法启动运行,快速修复方法

很多用户在日常使用电脑的时候&#xff0c;或多或少都遇到过&#xff0c;在启动游戏或软件的时候&#xff0c;Windows桌面会弹出错误提示框“KBDSF.DLL文件缺失&#xff0c;造成软件无法启动或运行&#xff0c;请尝试重新安装解决”。 首先&#xff0c;先来了解DLL文件是什么&a…

uniapp自定义底部导航栏

1.新建 nav-custom.vue组件 <template><view class"nav-box" :style"{height:heightpx,background:bgColor}"><!-- 自定义导航栏 --><view class"status_bar" :style"{height:statusBarHeightpx}"><!-- u…

深度学习笔记(二)——Tensorflow环境的安装

本篇文章只做基本的流程概述&#xff0c;不阐述具体每个软件的详细安装流程&#xff0c;具体的流程网上教程已经非常丰富。主要是给出完整的安装流程&#xff0c;以供参考 环境很重要 一个好的算法环境往往能够帮助开发者事半功倍&#xff0c;入门学习的时候往往搭建好环境就已…

Flask 菜品管理

common/libs/Helper.py getDictFilterField() 方法 用于在web/templates/food/index.html中展示菜品分类 如何能够通过food里面的cat_id获取分类信息呢&#xff1f;只能通过for循环&#xff0c;这样会很麻烦&#xff0c;所以定义了这个方法。 这个方法可以的查询返回结果…

Word2007导出PDF的正确做法

客户让做个一程序&#xff0c;从Excel读出数据&#xff0c;经过统计、计算生成PDF文档。我的做法是中间安装模板生成Word文档&#xff0c;然后在导出为PDF。 程序完成后需要测试&#xff0c;客户的环境是Win10Office2007。我用虚拟机搭建了环境&#xff0c;发现Word2007竟然无…