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

React条件渲染异常:仅Standard组件可渲染,求正确实现方式

问题分析与解决方案

你的条件渲染逻辑本身是没问题的,但事件处理时获取name属性的方式存在疏漏,导致selectedplan无法被正确赋值,进而无法触发Filled和Premium组件的渲染。

核心问题

当你点击<h3>标签时,e.target指向的是实际被点击的DOM节点:如果点击的是h3内部的文本内容,e.target会是文本节点(而非h3元素本身),而文本节点没有name属性,最终selectedplan会被设置为undefined或空值,自然匹配不到filled或premium的条件分支。

修复方案

把事件处理中的e.target.name替换为e.currentTarget.name:

  • currentTarget始终指向绑定事件处理函数的元素(也就是你的<h3>标签),无论你点击的是它的子节点还是自身,都能稳定获取到name属性。

同时可以优化一个冗余点:你在constructor中手动绑定了this.onClick,但又用类字段箭头函数定义了onClick——箭头函数已经自动绑定了this,所以可以删掉constructor里的this.onClick = this.onClick.bind(this);,避免重复绑定。

修改后的关键代码片段:

constructor(props) {
  super(props);
  this.state = { selectedplan: "" };
  // 移除这行冗余的绑定代码:this.onClick = this.onClick.bind(this);
}
onClick = e => this.setState({ selectedplan: e.currentTarget.name });

效果验证

修改完成后,点击三个套餐标题时,selectedplan会被正确设置为"standard"、"filled"、"premium",对应的条件渲染分支就能正常触发,Filled和Premium组件也会按预期显示了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:57:42