简单的重构会杀死反应性

时间:2018-08-09 22:10:05

标签: javascript vue.js

我有一个属性为

的数据对象
displaySubtotal

我可以通过以下方式更新该属性的值:

data.displaySubtotal = numPad.valueAsAString();

我的方法valueAsAString()是:

var valueAsAString = function() {
    var value = makeValue();

    if (value) {
        return value;
    }
    return 0;

};

好,所以当我尝试像这样抽象该函数时就会出现问题:

var valueAsAString = function() {
    var value = makeValue();

    func(value);

};

var func = function(x) {
    if (x) {
        return x;
    }
    return 0;
}

此时,它不再更新displaySubtotal属性。 displaySubtotal属性报告为未定义。

但是为什么?

我的重构不正确吗?

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

问题是重构的valueAsAString函数从不返回任何内容。没有return语句的函数默认情况下将返回undefined,这就是numPad.valueAsAString()undefined的原因。

valueAsAString内,只需更改

    func(value);

    return func(value);

您的功能应该可以工作。