You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Salesforce Lightning LWC自定义邮件组件JS语法错误求助

Salesforce LWC邮件组件JS语法错误修复方案

核心错误点梳理

  • Switch语句逻辑穿透:handleInputChange中每个case未添加break,修改单个输入项时会触发后续所有case的赋值操作,导致数据混乱。
  • 方法结构错误:Apex方法调用代码被写在handleEmailSend方法外部,造成变量作用域失效,无法访问内部定义的fileIds、contentVersionIds等变量。
  • Apex方法名称不匹配:导入的Apex方法是sendEmail,代码中误用sendEmailer调用,导致无法触发后端逻辑。
  • 变量引用错误:传递Apex参数时直接使用ToAddress、cc等未定义变量,需改为引用组件实例属性this.toAddress、this.cc。
  • 箭头函数语法错误:then/catch回调中写成result: =>的错误格式,应改为result =>;同时this:showSpinner的冒号需改为.以正确访问实例属性。
  • 语法括号不匹配:then方法的回调函数未闭合括号,破坏代码结构。
  • 语句结尾符号错误:then块中语句结尾误用逗号,需改为分号。

修正后的完整代码

import { LightningElement} from 'lwc';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import sendEmail from '@salesforce/apex/Example1EmailSender.sendEmail';

export default class EmailerComponent3 extends LightningElement {
    toAddress;
    subject;
    body;
    cc;
    bcc;
    showSpinner = false;
    ccClicked = false;
    bccClicked = false;
    uploadedFiles;
    files;
    fileids;

    handleInputChange(event) {
        switch (event.target.name) {
            case 'toAddress': 
                this.toAddress = event.target.value;
                break;
            case 'cc':
                this.cc = event.target.value;
                break;
            case 'bcc':
                this.bcc = event.target.value;
                break;
            case 'subject':
                this.subject = event.target.value;
                break;
            case 'body': 
                this.body = event.target.value;
                break;
        }
    }

    handleEmailSend() {
        this.showSpinner = true;
        var fileIds = [];
        var contentVersionIds = [];
        
        if (this.files) {
            this.files.forEach((file) => {
                contentVersionIds.push(file.contentVersionId);
                // 若需填充fileIds,可根据实际场景补充逻辑,如file.Id
                // fileIds.push(file.Id);
            });
        }

        sendEmail({
            fileIds: fileIds,
            ToAddress: this.toAddress,
            cc: this.cc,
            bcc: this.bcc,
            subject: this.subject, 
            body: this.body,
            contentVersionIds: contentVersionIds
        })
        .then(result => {
            this.showSpinner = false;
            console.log('APEX RESPONSE: ' + result);
            this.showToast('success', '邮件发送成功!', '');
        })
        .catch(error => {
            this.showSpinner = false;
            console.log('error');
            console.log(error);
            this.showToast('error', '出错了!', '请确保填写了有效的邮箱地址,且主题和正文内容完整。');
        });
    }

    showToast(type, title, message) {
        const event = new ShowToastEvent({
            title: title,
            message: message,
            variant: type
        });
        this.dispatchEvent(event);
    }

    ccButtonClicked() {
        this.ccClicked = true;
    }
    
    bccButtonClicked() {
        this.bccClicked = true;
    }

    handleUploadFinished(event) {
        this.files = event.detail.files;
        console.log(this.files);
    }
}

内容的提问来源于stack exchange,提问作者displayname39

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:30:42