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

React Native传递Date对象作为Props后无法调用其方法的问题

解决方案

你遇到的核心问题大概率是传递的item["date"]并非真正的Date对象,导致无法调用getDay()这类Date原型方法,以下是具体解决步骤:


1. 先确认item["date"]的实际类型

在父组件传递Props前,先打印类型和值,明确它到底是什么:

console.log(typeof item["date"], item["date"]);
  • 如果输出是string(比如ISO格式字符串"2024-05-20T12:00:00.000Z"),说明是序列化后的日期字符串
  • 如果输出是object但不是Date(比如{ date: "2024-05-20" }这类自定义对象),说明存储时Date被转成了普通对象

2. 把item["date"]转成真正的Date对象再传递

根据第一步的结果,修改父组件的Props传递:

  • 情况1:如果是日期字符串
<Task
  text={item["text"]}
  date={new Date(item["date"])} // 转成Date对象
  time={item["time"]}
  reminder={item["reminder"]}
  completed={item["completed"]}
/>
  • 情况2:如果是带date属性的普通对象
<Task
  text={item["text"]}
  date={new Date(item["date"].date)} // 取date属性转成Date对象
  time={item["time"]}
  reminder={item["reminder"]}
  completed={item["completed"]}
/>

3. 子组件中正确调用Date方法

转成Date对象后,直接调用方法即可,注意渲染时要转成可显示的字符串:

// 替换掉原来的console.log和注释的代码
<Text style={styles.itemText}>{date.getDay()}</Text>
// 或者用更友好的格式化方式,比如显示星期几
<Text style={styles.itemText}>
  {new Intl.DateTimeFormat('zh-CN', { weekday: 'long' }).format(date)}
</Text>

关于{...item['date']}无效的原因

Date对象的核心方法和属性都是不可枚举的,展开运算符...只能获取对象的可枚举属性,所以展开后拿不到任何有用的Date相关内容,完全没必要这么做。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:40:35