WEIRD ISSUE!值基于服务器以不同的代码结构返回

时间:2017-02-24 19:41:31

标签: reactjs server redux redux-form

我正在使用Redux Form并遇到了一个看起来很奇怪的问题!我做了一个在我的本地分支上完美运行的更新,但是当推到开发分支时,它通过代码建立到特定的ip,我的值似乎是不同的。因此,在测试远程开发IP时,我收到了此错误

form.ProcessCheckoutForm.registeredFields.find in not a function

所以我立即想到了form.ProcessCheckoutForm.registeredFields在某一点上不存在因此正在破坏或我的价值结构被捏造。在几个控制台日志之后,我注意到这是我的第二个假设。

当我控制日志窗体时,在我的本地分支(完全相同的代码!)上对我来说很奇怪.ProcessCheckoutForm.registeredFields我得到一个很好的对象数组。 enter image description here

但是当我在开发服务器上控制完全相同的值时,我会得到相同的东西,但是它是一个对象

enter image description here

也许我只是在星期五失去了理智,但这在我看来没有意义,我唯一能想到的是代码是时髦的还是服务器之间的命名约定存在某种问题。这两个想法都不应成为一个问题,因为在此问题之前,代码一直对我很好,而且我没有添加任何新文件或任何应该搞乱的东西。

它有点乱,但这就是执行此任务的代码部分(我删除了额外的东西,只是离开了控制台):

let shippingValues = {};
if (form.ProcessCheckoutForm) {
    const oldSuffix = '_shipping';
    const newSuffix = '_billing';
    Object.keys(form.ProcessCheckoutForm.values).forEach(field => {
        const prefix = field.substring(0, field.length - oldSuffix.length);
        if (form.ProcessCheckoutForm.fields) {
            console.log('registeredFields', form.ProcessCheckoutForm.registeredFields);
        }
    })
}

1 个答案:

答案 0 :(得分:0)

好的,所以不知道为什么会发生这种情况,但我制定了一个"修复(即将来修复任何此类实例的严重条件)"。我所做的就是使用Object.values方法将对象版本转换为对象数组。

所以我的#34;修复"看起来有点像这样:

let registeredFields = form.ProcessCheckoutForm.registeredFields;
if (form.ProcessCheckoutForm.registeredFields.constructor != Array) {
    registeredFields = Object.values(form.ProcessCheckoutForm.registeredFields);
}

粗,我知道,所以如果有人有任何建议,请告诉我