箭头函数中数组转为字符串,调用push方法报错求助
问题解决思路
问题根源
你的recipients原本是数组,但在handleChange方法中,this.recipients = event.detail.value把它覆盖成了字符串类型,而字符串没有push方法,所以触发报错。
具体修复方案
根据event.detail.value的实际格式选择对应处理:
如果
event.detail.value是逗号/分隔符拼接的字符串
把字符串分割转换为数组:handleChange(event) { // 按逗号分割并去除每个邮箱的首尾空格 this.recipients = event.detail.value.split(',').map(item => item.trim()); }如果
handleChange是用来追加数据而非覆盖原数组
不要直接赋值,改用数组追加逻辑:handleChange(event) { // 先把输入值转为数组格式 const newItems = Array.isArray(event.detail.value) ? event.detail.value : event.detail.value.split(',').map(item => item.trim()); // 追加到原数组 this.recipients.push(...newItems); }确保变量作用域正确
初始的recipients = [];如果定义在类外部,建议移到类的构造函数中绑定到实例,避免作用域混乱:constructor() { super(); // 继承类或React组件需保留此行 this.recipients = []; this.toAddresses = []; // 同步初始化toAddresses避免后续遍历报错 }
兜底防错
在handleSend中调用push前,可加类型判断避免意外:
handleSend(event){ // 确保recipients始终是数组 if (!Array.isArray(this.recipients)) { this.recipients = []; } this.toAddresses.forEach((address) => { const email = address.emailAddress; this.recipients.push(email); }); }
内容的提问来源于stack exchange,提问作者Pseudodarwinist
相关产品推荐
相关产品推荐

