TypeError:未定义不是一个对象(评估“details.date.getTime”)
2020-09-23
2767
我正在使用 https://github.com/zo0r/react-native-push-notification 来显示通知,在我的例子中,我使用 datetimepicker 的 schedulingnotifications。我之前在另一个项目中使用过它,它工作正常,没有错误,但在这个项目中我得到了 TypeError:undefined 不是对象(评估“details.date.getTime”)这个错误在我设置时间等后按下确认后出现。
notifSchedule = (todo, date) => {
PushNotification.localNotificationSchedule({
id: todo.id,
message: todo.title,
date,
allowWhileIdle: true,
priority: 'high',
});
};
这正是我在另一个项目中所做的,所以它应该有效。唯一不同的是我现在使用的是类组件,而另一个项目仅使用函数。
当我使用 date: new Date(Date.now() + 60 * 1000), // in 60 secs 而不是 date 时,它​​甚至不会触发任何东西,什么也不会发生。
EDIT2: 完整错误消息
Possible Unhandled Promise Rejection (id: 3):
TypeError: undefined is not an object (evaluating 'details.date.getTime')
localNotificationSchedule@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:129002:38
notifSchedule
handleChange@http://10.0./index.bundle?platform=android&dev=true&minify=false:129538:16
resolve@http://10.81/index.bundle?platform=android&dev=true&minify=false:129662:19
tryCallOne@http://181/index.bundle?platform=android&dev=true&minify=false:27056:16
http://10.81/index.bundle?platform=android&dev=true&minify=false:27157:27
_callTimer@http://881/index.bundle?platform=android&dev=true&minify=false:30596:17
_callImmediatesPass@http://10.081/index.bundle?platform=android&dev=true&minify=false:30635:17
callImmediates@http://1081/index.bundle?platform=android&dev=true&minify=false:30852:33
__callImmediates@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2736:35
http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2522:34
__guard@http://1801/index.bundle?platform=android&dev=true&minify=false:2719:15
flushedQueue@http://1081/index.bundle?platform=android&dev=true&minify=false:2521:21
flushedQueue@[native code]
invokeCallbackAndReturnFlushedQueue@[native code]
3个回答
传入的
date
参数可能未定义。调试传递给
localNotificationSchedule
的具体内容,这可能是由于您在组件生命周期中犯的一些错误造成的
kuzditomi
2020-09-23
确保您的日期格式符合函数要求,然后使用:
date: date
notifSchedule = (todo, date) => {
PushNotification.localNotificationSchedule({
id: todo.id,
message: todo.title,
date: date,
allowWhileIdle: true,
priority: 'high',
});
};
Bhupesh Kumar
2020-09-23
正如您所说,您正在使用基于类的组件,因此我想补充一点,请确保您正确绑定了函数,否则它将无法工作。基于类的函数需要绑定函数,而函数则自行完成。有时,值可能似乎未定义,因为您没有正确处理它们。 或 调试您要从中提取日期的详细信息或执行如下操作
console.log(details); //if undefined do some action to fill it
details && details.date.getTime; //for conditional rendering
Suleman Ahmad
2020-09-23