【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.