Teşhis RangeError: aşılmaması Maksimum çağrı yığını boyutu KeyEscapeUtils
Bizim Webapp ile yazılır Arkaplan tepki tepki ve Redux resmi tepki-redux bağları kullanarak. Bu web uygulamasında kullanılan bir başka birincil kitaplık PaperJS. Kısa bir süre React kullanmış olmasına rağmen, bunu kısa bir süre önce Redux uygulaması olarak değiştirdik.
Sorun
bazen sütü (genellikle her yenileme) İşte
RangeError: Maximum call stack size exceeded
at String.replace (<anonymous>)
at Object.unescape (KeyEscapeUtils.js:49)
at flattenSingleChildIntoContext (flattenChildren.js:32)
at flattenChildren.js:53
at traverseAllChildrenImpl (traverseAllChildren.js:69)
at traverseAllChildrenImpl (traverseAllChildren.js:85)
at traverseAllChildren (traverseAllChildren.js:157)
at flattenChildren (flattenChildren.js:52)
at ReactDOMComponent._reconcilerUpdateChildren (ReactMultiChild.js:209)
at ReactDOMComponent._updateChildren (ReactMultiChild.js:315)
neden o da çöküyor Tepki kaynak kod:
return ('' + keySubstring).replace(unescapeRegex, function (match) {
return unescaperLookup[match];
});
ve bağlam içinde:
/**
* Unescape and unwrap key for human-readable display
*
* @param {string} key to unescape.
* @return {string} the unescaped key.
*/
function unescape(key) {
var unescapeRegex = /(=0|=2)/g;
var unescaperLookup = {
'=0': '=',
'=2': ':'
};
var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);
return ('' + keySubstring).replace(unescapeRegex, function (match) {
return unescaperLookup[match];
});
}
Bu, muhtemelen yanlış kullanıyorum bir yerde kodumda React olduğunu, ancak stacktrace kendi kodlarımdan herhangi bir başvuru içermediğinden, ne arayacağımı bilmiyorum. Yeniden oluşturma işleminin sonsuz bir döngüsü gibi görünüyor ve hatalı bir şekilde setState
numaralı çağrıya bağlı olabileceğinden şüpheleniyorum.
benim şüphe ihtimali var mı Soru? Kendi kod tabanımın oldukça kapsamlı olması nedeniyle bu sorunu nasıl daha fazla teşhis edebilirim? Bunun KeyEscapeUtils'de başarısız olduğu ne anlama geliyor?
Bu işlevin nerede kullanıldığını, ideal olarak onu kullanan tüm bileşeni ekleyebilir misiniz? Hatanın kaynağı büyük olasılıkla daha yüksektir. –