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

如何在TypeScript中实现LitElement单选按钮控制表单的条件渲染

问题根源

你在遍历表单配置数组的每一轮循环中,仅判断formIndex > -1就渲染当前循环对应的表单,所以只要选中任意单选按钮,formIndex变为0或1后,所有循环项的判断条件都会触发,自然会同时渲染全部表单。

修改方案

1. 调整渲染逻辑

遍历表单数组时取当前项的索引,仅当formIndex和当前索引完全相等时才渲染对应表单,同时给单选按钮增加索引标识方便事件处理,还可以绑定checked属性让单选选中状态和数据同步:

protected renderMultipleForms(formConfig: any): TemplateResult {
        return html`
            ${formConfig?.formHeading ? html`<h3>${formConfig.formHeading}</h3>` : ''}
                ${formConfig.forms?.map((data: any, index: number) => html`
                    <!-- RADIOS  -->
                    <input 
                        type="radio" 
                        id=${data.label} 
                        name="paymentRadios" 
                        data-index=${index}
                        ?checked=${this.formIndex === index}
                        @click="${this.handleClick}"
                    >${data.label} <br />
                    <!-- RENDERING FORMS  -->
                    <p>${this.formIndex === index ? this.renderForm(data.form, data.paymentIcons) : ''}</p>
                `)}
        `;
}

2. 优化点击事件处理

不用硬编码判断是第0个还是第1个表单,直接读取单选按钮绑定的索引赋值即可,适配任意数量的表单配置:

protected handleClick(e: any){
    this.formIndex = Number(e.target.dataset.index);
    console.log(this.formIndex);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:15:05