计算属性和监听属性,生命周期钩子,组件介绍

这篇具有很好参考价值的文章主要介绍了计算属性和监听属性,生命周期钩子,组件介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

计算属性

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

基本使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div id="d1">
    <h1>普通函数---其他数据变化---》函数会重写计算</h1>
    年龄:<input type="text" v-model="age">
    姓名:<input type="text" v-model="name">
    <br>
    {{getAge()}}
    <br>
    <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: '#d1',
        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>

首字母变大写

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div id="d1">
    <h1>首字母变大写</h1>
    <input type="text" v-model="name"> ---》{{newName}}
</div>
</body>
<script>
    var vm = new Vue({
        el: '#d1',
        data: {
            name: ''
        },
        computed: {
            newName() {
                return this.name.substring(0, 1).toUpperCase() + this.name.substring(1)
            }
        }
    })
</script>
</html>

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<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>
</html>

监听属性

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<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>
</html>

生命周期钩子

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


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

组件介绍

# 组件是:有模板,有js的 ,有方法的 对象  组件和组件直接的 变量,模板都是隔离的

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

        },
        methods: {
            haneleClick() {
                alert('美女')
            }
        }
    })
# 使组件,直接根据组件名使用即可
  <Child></Child>

局部组件和全局组件

 #  全局组件
    - 定义:
    Vue.component('Child',{})
    - 使用,可以在任意位置使用
        <Child></Child>
    
# 局部组件-->只能定义在组件内部,只能在当前组件中使用
    -定义
     var vm = new Vue({
        el: '#app',
        data: {},
        components:{局部组件:{}}
    })
    -使用:只能用在被 当前组件管理的 html (#app) 中,放在别的位置找不到

全局组件使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div id="d1">
    <h1>组件的使用</h1>
    <button @click="handleClick">点我看美女</button>
    <hr>
    <lyz></lyz>
</div>
</body>
<script>
    // 定义全局组件
    Vue.component('lyz', {
        template: `
          <div>
            <h1>{{ name }}</h1>
            <button @click="handleClick">点我换名字</button>
          </div>`,
        data() {
            return {
                name: 'lyz'
            }
        },
        methods: {
            handleClick() {
                this.name = '吴彦祖'
            }
        }
    })
    var vm = new Vue({
        el: '#d1',
        data: {},
        methods: {
            handleClick() {
                alert('美女')
            }
        }
    })
</script>
</html>

局部组件的使用

局部组件是定义在组件内部,只能在当前组件中使用文章来源地址https://www.toymoban.com/news/detail-809999.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div id="app">
    <h1>局部组件的使用</h1>
    <Child></Child>
</div>
</body>
<script>
    // 全局组件
    Vue.component('Child', {
        template: `
          <div>
            <lyz></lyz>
          </div>
        `,
        // 局部组件
        components: {
            lyz: {
                template: `
                  <div>
                    <h2>我是局部组件</h2>
                  </div>
                `,
                data() {
                    return {}
                },
                methods: {}
            }
        }
    })
    var vm = new Vue({
        el: '#app',
        data: {},
        methods: {
            handleClick() {
                alert('美女')
            }
        },
    })
</script>
</html>

组件间通信

父传子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div id="d1">
    <h1>组件通信之父传子:自定义属性</h1>
    <p>父组件中得名字:{{name}}</p>
    <div style="background-color: #c0e9ff">
        <child :nn="name" mm="lyz"></child>
    </div>
</div>
</body>
<script>
    Vue.component('child',{
        template:`
            <div>
            <h2>我是Child组件</h2>
            <p>{{nn}}==={{mm}}</p>
            </div>
        `,
        props:['nn','mm']
    })
    var vm = new Vue({
        el:'#d1',
        data:{
            name:'吴彦祖'
        },
        methods:{
        }
    })
</script>
</html>

子传父

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div id="d1">
    <h1>组件通信之子传父:自定义事件</h1>
    <p>子组件的值:{{p_name}}</p>
    <child @mm="handleEvent"></child>
</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('mm', this.name)
            }
        }
    })
    var vm = new Vue({
        el: '#d1',
        data: {
            p_name: ''
        },
        methods: {
            handleEvent(name) {
                this.p_name = name
            }
        }
    })
</script>
</html>

到了这里,关于计算属性和监听属性,生命周期钩子,组件介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Vue入门三(表单控制|购物车案例|v-model进阶|与后端交互|计算属性|监听属性|Vue生命周期)

    Vue入门三(表单控制|购物车案例|v-model进阶|与后端交互|计算属性|监听属性|Vue生命周期)

    v-model双向数据绑定,还可以对输入框数据进行一定的限定。 v-modle 释义 lazy 等待input框的数据绑定时区焦点之后再变化 number 以数字开头并只保留后面的数字,不保留字母;字母开头都保留 trim 去除首位的空格 与后端交互统一使用json编码格式 与后端交互涉及到跨域问题后,

    2024年01月21日
    浏览(14)
  • Vue介绍&如何安装vue&Vue生命周期钩子&MVVM

    Vue介绍&如何安装vue&Vue生命周期钩子&MVVM

    目录 1.vue介绍 1.1 什么是vue 1.2 vue的优点 2. 库和框架的区别 2.1 库 2.2 框架 3. MVVM 4. 安装vue 5.开发示例 5.1 vue实例 5.2 绑定事件 5.3 Vue双向数据绑定 6. Vue生命周期钩子 vue是一个构建用户界面UI的渐进式javascript框架,渐进式的框架是指可以一步一步的由浅入深的去使用这个框架,

    2024年02月07日
    浏览(11)
  • Vue - 实现类似小程序 onShow() 一样的生命周期钩子方法(监听页面的显示,只要页面显示就执行代码)

    Vue - 实现类似小程序 onShow() 一样的生命周期钩子方法(监听页面的显示,只要页面显示就执行代码)

    我们都知道,在微信小程序和 uni-app 项目中,页面有一个 onShow() 生命周期,当页面显示时就会触发。 但在 Vue.js / Nuxt.js 项目中是没有这个钩子函数的, 本文将提供 最简单、高效 的解决方案, 另外兼容性亲测完美。 如下效果图所示,首页每次显示的时候都会触发(您看控制

    2024年02月11日
    浏览(13)
  • Ionic4 生命周期钩子函数和angular生命周期钩子函数介绍

    Ionic 4(以及之后的 Ionic 版本)使用了 Angular 生命周期钩子,因为 Ionic 是基于 Angular 构建的。因此,Ionic 4 中的生命周期与 Angular 组件生命周期非常相似。以下是一些常见的 Ionic 4 生命周期钩子: ionViewDidLoad : 在页面加载完成后触发。通常用于执行一次性的初始化任务。不推

    2024年02月07日
    浏览(15)
  • Vue3 第三节 计算属性,监视属性,生命周期

    Vue3 第三节 计算属性,监视属性,生命周期

    1.computed计算属性 2.watch监视函数 3.watchEffect函数 4.Vue的生命周期函数 计算属性简写和完整写法 2.1 监视情况分类  情况① 监视ref定义的响应式数据: 第一个参数是监视的数据,第二个参数是一个回调函数 immediate:一上来就执行,放到第三个参数中 情况② 监视多个ref定义的响应

    2024年02月14日
    浏览(9)
  • Angular--父子组件生命周期钩子(lifecycle hooks)执行过程

    Angular--父子组件生命周期钩子(lifecycle hooks)执行过程

    组件初始化过程中,生命周期钩子执行顺序: constructor()构造函数,初始化class,(constructor不属于Angular生命周期钩子的范畴,这里只是说明组件组件初始化会先调用构造函数)。 ngOnChanges()--如果组件没有输入属性(@Input()),或者使用时没有提供任何输入属性,那么angular不会调用它

    2024年01月20日
    浏览(12)
  • vue3-生命周期钩子函数

    声明周期函数onMounted ,onUnmounted,onUpdated onMounted:页面渲染之前执行,执行完,页面就出来了 onUnmounted:组件注销之前执行,执行完组件就不在页面显示了。如果隐藏组件就行执行。 onUpdated:当组件内的内容发生变化时,就会执行这个更新钩子函数,比如删除数组中的某个元素

    2024年02月11日
    浏览(17)
  • Vue生命周期--四大阶段--8个钩子之mounted钩子的渲染

    Vue生命周期--四大阶段--8个钩子之mounted钩子的渲染

    Vue生命周期 :一个Vue实例从创建到销毁的整个过程。 生命周期四个阶段 :创建(响应式数据)-挂载(渲染模板)-更新(修改数据,更新视图)-销毁(销毁实例) eg: 案例——记事本! 1.成果展示 2.需求:商品的添加与删除;价格超过500标红;统计计算总消费;消费账单使用饼图展示

    2024年01月19日
    浏览(16)
  • Angular 17+ 高级教程 – Component 组件 の 生命周期钩子 (Lifecycle Hooks)

    Angular 17+ 高级教程 – Component 组件 の 生命周期钩子 (Lifecycle Hooks)

    之前在 Component 组件 の Angular Component vs Custom Elements 文章中,我们有学习过几个基础的 Lifecycle Hooks。 比如 OnChanges、OnInit、AfterViewInit、OnDestroy,但那篇只是微微带过而已。 这篇让我们来深入理解 Angular 的 Lifecycle Hooks。   在 Component 组件 の Dependency Injection NodeInjector 文章中

    2024年03月09日
    浏览(19)
  • 探索Vue生命周期钩子函数:从创生到销毁

    探索Vue生命周期钩子函数:从创生到销毁

    Vue这个引领前端开发潮流的框架,其优雅的响应式数据绑定和组件式开发方式,使得它备受瞩目。然而,Vue的魅力绝不仅限于此,它还赋予开发者一组神奇的生命周期钩子函数,能够在组件的各个成长阶段插入自定义代码。本文将带你进入Vue生命周期钩子函数的奇妙世界,一

    2024年02月11日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包