【Salesforce】Lightning ComponentでMaximum call stack size exceeded

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です