账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    计算属性是不是只在第一次计算的时候收集使用到的属性,第一次未收集到的属性值变化不会导致计算属性变化???
    30
    0

    计算属性是不是只在第一次计算的时候收集使用到的属性,之后当这些属性变化的时候,会重新计算属性??
    例如,下面的例子,prefix属性会每秒变化一次,但prefix属性的变化不会导致upper计算属性的变化。
    是不是因为第一次执行计算属性的时候,没有访问到prefix(因为if条件),之后,prefix变化也不会导致计算属性重新调用??

       <div id='app'>
            <p> {{ upper }} </p>
        
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script>
            var xyz = new Vue({
                el: '#app',
                data: {
                    name: 'xx',
                    prefix: 'A',
                    suffix: 'Y'
                },
                computed: {
               
                    upper: function() {
                        var _this = this;
    
                        console.log('recompute :' + this.name);
                        if (_this.suffix.length > 10)
                            return this.name.toUpperCase() + "+" + this.prefix;
                        return this.name.toUpperCase() + "_" + this.suffix;
                    }
                },
                mounted: function() {
                    var _this = this;
                    this.timer = setInterval(function() {
                        if (_this.name.length > 100 || _this.suffix.length > 50 || _this.prefix.length > 50)
                            return;
      
                        _this.prefix = _this.prefix + _this.prefix;
                        console.log("timer...prefix:" + _this.prefix);
                    }, 1000);
                },
                beforeDestory: function() {
                    if (this.timer)
                    {
                        clearInterval(this.timer);
                    }
                }
    
            });
          
        </script>
    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 。不狂不戰﹏. 普通会员 1楼

      是的,属性通常只在第一次计算的时候收集和使用。第一次未收集到的属性值变化不会导致计算属性变化。这是因为属性是在数据模型中存储的,存储的属性是在每次数据操作后都自动更新的。例如,在数据库中,如果我们在查询中使用了一个未被收集的属性,那么这个属性的值在下次查询时不会被重新计算。

      但是,需要注意的是,如果属性是数据模型中的一个属性,并且属性的值是不可变的(例如,一个日期或一个时间戳),那么这个属性就不是在每次数据操作后都自动更新的。在这种情况下,属性的值在下次数据操作时可能会发生变化,因此在使用属性时需要确保它的值是可变的。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部