【Salesforce】Lightning ComponentでMaximum call stack size exceeded
Lightning Componentの開発をしていて、エラーが表示されました。
Maximum call stack size exceeded
調べてみると、JavaScriptのコールスタックというものがいっぱいだというエラーのようです。
再起処理で起きることが多いようですが、特に再起処理を書いた覚えはないのです。
コードはこんな感じです。
クライアント側コントローラ
// ヘルパーの処理を呼び出す func : function(component, event, helper) { // ヘルパーの処理を呼び出す helper.func(component, event, helper); }
クライアント側ヘルパー
// サーバの処理を呼び出す func : function(component, event, helper) { var action; // サーバの処理を取得する action = component.get('c.func'); // コールバックを設定する action.setCallback(this, function(res) { }); // サーバ処理を実行する $A.enqueueAction(action); }
サーバ側メソッド
/** * サーバ側メソッド */ @AuraEnabled public static String func(){ return null; }
Chromeで処理を追っていくと原因が分かりました。
クライアント側のコントローラとサーバ側のコントローラで同じ名前の処理が存在しますね。
helper.func内の「component.get(‘c.func’)」でクライアント側の処理が取得され、無限ループとなったようです。
component.getではクライアント側の処理もサーバ側の処理も取得できるんですよね。
クライアント側の処理名を変更して解決しました。
// ヘルパーの処理を呼び出す callFunc : function(component, event, helper) { // ヘルパーの処理を呼び出す helper.func(component, event, helper); }
似たような名前の処理を作らないのが一番なんですけどね。
No comments.