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

React组件接收props传递的Date为undefined 调用方法报错如何解决

React props传值为undefined问题排查解决

问题复现

子组件CalenderDate.js中尝试读取props.date调用日期方法,控制台抛出错误:

Cannot read properties of undefined (reading 'toLocaleString')

相关代码如下:
子组件代码:

function CalenderDate(props) {
    return (
        <div className="date">
            <div>
                <div>{props.date.toLocaleString('en-US', { month: 'long' })}</div>
                <div>Date</div>
                <div>Year</div>
            </div> 
        </div>
    )
}

父组件App.js代码:

function App() {
const array = [
{
 date: new Date(2020, 11, 23),
 words:"string of text"},
{
 winningNumber: 7,
 message: "Winning Number 7"}
]

return(
<>
<CalenderDate date = array[0].date></CalenderDate>
</>
)
}

核心错误原因

JSX语法规则中,只有传递静态字符串类型的prop时可以直接写属性值,如果要传递变量、数字、对象、数组、函数这类JavaScript表达式类型的值,必须用{}将值包裹,告诉编译器这是需要执行的JS代码,不是普通字符串。
你当前的写法<CalenderDate date = array[0].date>没有加花括号,React不会解析array[0].date这个变量,最终子组件接收到的props.date就是undefined,调用方法自然报错。

修复方案

1. 修正父组件传值语法

给传入的date值加上花括号包裹即可:

function App() {
  const array = [
    {
      date: new Date(2020, 11, 23),
      words:"string of text"
    },
    {
      winningNumber: 7,
      message: "Winning Number 7"
    }
  ]

  return(
    <>
      {/* 非字符串值用{}包裹传递 */}
      <CalenderDate date={array[0].date}></CalenderDate>
    </>
  )
}

2. (可选)子组件增加容错逻辑

避免后续因为传值异常、父组件加载延迟等问题导致页面崩溃,可以给props加默认兜底:

function CalenderDate(props) {
  // 未接收到合法date时,默认使用当前日期兜底
  const renderDate = props.date instanceof Date ? props.date : new Date();
  return (
    <div className="date">
      <div>
        <div>{renderDate.toLocaleString('en-US', { month: 'long' })}</div>
        <div>{renderDate.getDate()}</div>
        <div>{renderDate.getFullYear()}</div>
      </div> 
    </div>
  )
}

通用排查思路

后续遇到props值为undefined的问题,按以下顺序检查即可快速定位:

  • 检查非字符串类型的prop传递时,是否用{}包裹了表达式
  • 检查传入的变量本身是否存在值,排查数组索引越界、对象属性不存在、异步数据未返回就渲染的情况
  • 检查prop名称拼写是否一致,避免父组件传data子组件读date这类低级错误
  • 检查是否存在组件嵌套层级过深,props透传时中间层漏传的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:21:38