2016-01-21 42 views
3

的設置未捕獲不變違規:traverseParentPath(...):不能和同一ID,``

在我的項目我用了很多圖書館的移動,但這種情況下,我覺得這些是相關的:redux-form,material-uiparse

在我的應用我有一個表格組件,它看起來像這樣:

class ObjectForm { 

    render() { 
    const { fields: { field }, handleSubmit, submitting } = this.props; 

    return (
     <form onSubmit={handleSubmit}> 
     <TextField hintText="Hint Text" {...field} /> 
     <RaisedButton label="Send" type="submit" disabled={submitting} /> 
     </form> 
    ); 
    } 

} 

由容器包裹,是這樣的:

function mapStateToProps(state) { 
    const { object } = state; 
    return { 
    object, 
    initialValues: { 
     field: object.get('field'), 
    }, 
    onSubmit: data => { 
     return object.save({ 
     field: data.field, 
     }); 
    }, 
    }; 
} 

export default reduxForm({ 
    form: 'objectForm', 
    fields: [ 
    'field', 
    ], 
}, mapStateToProps)(ObjectForm); 

問題

的問題是那當表單很髒時(我改變了輸入的值),我得到這個錯誤:

Uncaught Invariant Violation: traverseParentPath(...): Cannot traverse from and to the same ID, ``. 

除此之外,解析對象實際上被保存,但按鈕不會禁用,直到保存結束。

如果我只是再次提交表單,而不更改任何值,一切正常。

什麼引起它

到現在爲止,我能找到3個代碼,如果刪除,使誤差走開!

第一個是提交按鈕的disabled屬性。刪除disabled={submitting}部分,使錯誤消失,但我錯過了視覺反饋。 更新:如果我刪除disabled屬性,但使用submitting屬性有條件地顯示加載指示器沒有錯誤引發,但該指標也沒有顯示(儘管它確實顯示如果表單是乾淨的)。

第二個是不發送initialValues道具到reduxForm。刪除initialValues: {...}也會導致錯誤消失。

最後但並非最不重要的一點是,不要將新值設置爲parse對象屬性也會使錯誤消失。只需從object.save調用中刪除參數,一切正常。

幫助!

因爲這個,我掙扎了好幾天,我沒有想法。

調用堆棧

enter image description here

+0

我得到了同樣的錯誤信息。在我的情況下,它實際上掩蓋了一個簡單的JavaScript錯誤(一個未定義的變量)。因此,調試你的應用程序,在你的'render'方法中設置一個斷點,並確保所有變量('fields','handleSubmit','submitting')在使用時都被定義。 –

+0

我遇到了與反應形式和材料用戶界面相同的問題。我發現這個錯誤來自一個被調用的方法,用來在按鈕上生成一個'disabled'屬性。在我的情況下,錯誤的根源在於一個回調被formy-react調用的非常隨機的一組參數調用,它爲我禁用的prop創建了未定義的值。我建議你看一下''使用'console.log'提交出來的值。 – hookd

+0

'即'? –

回答

5

我被看遠一點了調用堆棧運行到了同樣的錯誤,並找到了根源:

enter image description here

「類型「和」道具「信息讓我得到了我寫的這段小小的代碼,無論出於什麼原因, CT:

<textPath 
ref={(node) => { 
     node && node.setAttribute("startOffset", '50%') 
     }} 
> 
    {text} 
</textPath> 

談到了裁判固定對我來說:

<textPath 
// ref={(node) => { 
//  node && node.setAttribute("startOffset", '50%') 
//  }} 
> 
    {text} 
</textPath> 

對我來說,解決它可能意味着移動反應15,其中SVG標籤完全支持,我不會有依靠參考黑客。我不確定你的情況會有什麼修復,但是我認爲我會分享我的情況以防萬一。

乾杯, 托馬斯

+0

我有同樣的問題。我手動更新了反應熱鍵以使用react-dom 15.5.4,並解決了問題。 – Zui

相關問題