React Native报错TypeError: undefined is not an object (evaluating 'date.getFullYear')
解决 TypeError: undefined is not an object (evaluating 'date.getFullYear') 错误
这个错误的核心原因是调用 getFormattedDate 函数时传入的 date 参数为 undefined,导致无法调用 getFullYear() 方法,错误栈显示问题出在 ExpenseItem 组件中调用该函数的位置。
具体解决方法
1. 给 getFormattedDate 函数添加参数校验
修改 date.js 中的函数,先判断传入的 date 是否为有效日期对象,避免直接调用方法导致崩溃:
export function getFormattedDate(date){ if (!date || !(date instanceof Date)) { return "未知日期"; // 也可根据需求返回空字符串 "" } return `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()}`; }
2. 确保 ExpenseItem 的 date 属性始终有效
检查渲染 ExpenseItem 的数据源(通常是 FlatList 绑定的 expense 列表),确保每一条数据都包含有效的 date 字段:
- 如果数据来自 API,确认返回的日期字段已被正确转换为
Date对象; - 如果是本地生成的数据,初始化时给每条 expense 设置默认日期(比如当前日期)。
3. 在 ExpenseItem 组件中添加 fallback 处理
在调用 getFormattedDate 前先判断 date 是否存在,或者设置默认值:
// ExpenseItem 组件中修改日期渲染部分 <Text style={styles.textBase}> {date ? getFormattedDate(date) : "未知日期"} </Text>
或者直接给默认日期:
<Text style={styles.textBase}> {getFormattedDate(date || new Date())} </Text>
内容的提问来源于stack exchange,提问作者Harshit
相关产品推荐
相关产品推荐

