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

React应用状态传递异常:空字符串变undefined致搜索失效

问题分析与解决方案

核心问题

在DividendResultsDisplay组件中,你错误地使用props.data访问数据,但父组件SearchPage传递的props名称是dividendsData,而非data。这直接导致props.data为undefined,引发后续渲染错误。

具体错误点

在DividendResultsDisplay.js的返回部分:

return (
  <div>
    <h3>{props.data.name}</h3>
    <h4>{props.data.sector}</h4>
    {/* ...其他代码 */}
  </div>
)

此处的props.data应为props.dividendsData,同时初始状态的dividendsData缺少summary和sector字段,也会引发潜在渲染问题。

修复步骤

  1. 修正props名称错误
    修改DividendResultsDisplay.js中的返回代码:
return (
  <div>
    <h3>{props.dividendsData.name}</h3>
    <h4>{props.dividendsData.sector}</h4>
    {renderDescription()}
    <br/><br/>
    {mainInfo}
    <br/>
    {yieldChange}
    <br/>
    {allDividends}
  </div>
)
  1. 补充初始状态缺失字段
    在SearchPage.js的dividendsData初始状态中添加缺失字段:
const [dividendsData, setDividendsData] = useState(
  {
    current_price: '',
    recent_dividend_rate: '',
    current_yield: '',
    dividend_change_1_year: '',
    dividend_change_3_year: '',
    dividend_change_5_year: '',
    dividend_change_10_year: '',
    all_dividends: [],
    name: '',
    description: '',
    summary: '',
    sector: '',
    earnings: []
  }
)
  1. 增加字段容错处理
    修改renderDescription函数,避免因summary字段为空报错:
const renderDescription = () => {
  if (descriptionVisible) {
    return (
      <p style={{cursor: 'pointer'}} onClick={toggleDescription}>{props.dividendsData.summary || '暂无描述'}</p>
    )
  } else {
    return (
      <a style={{cursor: 'pointer'}} onClick={toggleDescription}>Description <div className="ui icon caret up"></div></a>
    )
  }
}

额外建议

  • 访问嵌套props时使用可选链操作符(?.),例如props.dividendsData?.name,避免出现Cannot read property 'xxx' of undefined错误。
  • 确认API返回的数据结构与组件预期完全匹配,提前处理字段缺失的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:24:52