VUE的template中的方法什么时候执行

我在看vue官网的下述文章

计算属性和侦听器 — Vue.js

其中说到计算属性和方法在作用上是一致的

我感觉不太可能,于是把官网的代码写下来,稍微做了些调整,如下:

<template>
    <div id="example">
        <p>原始值:</p><input type="text" v-model="message">
        <p>计算属性的值: "{{ messageReversed }}"</p>
        <p>方法的运行结果: "{{ reverseMessage() }}"</p>
    </div>
</template>
<script>
    export default {
        data() {
            return {
                message: 'Hello'
            }
        },
        computed: {
            messageReversed: function () {
                console.log("进入了computed");
                return this.message.split('').reverse().join('')
            }
        },
        methods: {
            reverseMessage: function () {
                console.log("进入了methods");
                return this.message.split('').reverse().join('')
            },
        }
    }
</script>

<style scoped>

</style>

这是一段很简单的代码,运行后的结果如下:

这个时候,产生下述一些疑问,并给出了自己的解释

问题1:如果我改变“输入框”里的Hello,比如,我改成abcde

那么浏览器中“方法的运行结果”后的值是否发生改变?

回答:会发生改变

问题2:为什么会发生改变?

难道methods中的方法像computed一样,也和自己使用的data对象进行了关联?

当data对象改变的时候,方法就会被执行?

回答:是的。

经过我的实验,关于<template>中的methods方法何时被执行,我总结了下述几种情况

情况1:当message的内容发生了改变————会被执行

情况2:当data中的其他属性被修改,并且在<template>界面上有所反应的时候————会被执行

情况3:当data中的其他属性被修改,但是这个属性在<template>界面上没被使用————不会执行

情况4:当通过纯JS的dom方法往浏览器上添加、改变或删除HTML元素————不会执行

抛开这些表面纷繁复杂的东西,找一个统一的、好理解的清晰规律

(下述结论未严格证明)

在执行相关操作后(手动或代码操作),vue会考虑<template>是否有刷新的必要

如果有,那么就刷新,而<template>的刷新,必然导致<template>中方法的执行

那么又来了新的问题:vue是如何判断<tempalte>有必要刷新?

回答:

相关的值或方法的运行结果的最新状态,在<template>是否是最新的!

不是最新的,则刷新<template>

最后总结:

不建议在<template>中把方法的结果作为值来展示!

感觉是个骚操作

因为如果这么做,那个方法就无法修改data函数中定义的属性

因为会形成死循环

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈地图

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值