Ошибка типа: неопределенный не является объектом (оценка ‘details.date.getTime’)

#javascript #reactjs #react-native #react-native-android

#javascript #reactjs #реагировать -родной

Вопрос:

Я использую https://github.com/zo0r/react-native-push-notification чтобы иметь возможность показывать уведомления, в моем случае я использую schedulednotifications с помощью datetimepicker. Я использовал это раньше в другом проекте, и он работал нормально без ошибок, но в этом проекте я получаю TypeError: undefined не является объектом (оценка ‘details.date.getTime’) эта ошибка появляется после того, как я нажал подтвердить после настройки времени и т. Д.

 notifSchedule = (todo, date) => {
PushNotification.localNotificationSchedule({
  id: todo.id,
  message: todo.title,
  date,
  allowWhileIdle: true,
  priority: 'high',
});
};
  

это именно то, что я делал в другом проекте, поэтому он должен работать. единственное отличие в том, что я использую компонент класса прямо сейчас, а в другом проекте — только функции.

когда я использую date: новая дата (Date.now() 60 * 1000), // через 60 секунд вместо даты он даже ничего не запускает, ничего не происходит.

ПРАВКА2: полное сообщение об ошибке

 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=androidamp;dev=trueamp;minify=false:129002:38
notifSchedule
handleChange@http://10.0./index.bundle?platform=androidamp;dev=trueamp;minify=false:129538:16
resolve@http://10.81/index.bundle?platform=androidamp;dev=trueamp;minify=false:129662:19
tryCallOne@http://181/index.bundle?platform=androidamp;dev=trueamp;minify=false:27056:16
http://10.81/index.bundle?platform=androidamp;dev=trueamp;minify=false:27157:27
_callTimer@http://881/index.bundle?platform=androidamp;dev=trueamp;minify=false:30596:17
_callImmediatesPass@http://10.081/index.bundle?platform=androidamp;dev=trueamp;minify=false:30635:17
callImmediates@http://1081/index.bundle?platform=androidamp;dev=trueamp;minify=false:30852:33
__callImmediates@http://10.0.2.2:8081/index.bundle?platform=androidamp;dev=trueamp;minify=false:2736:35
http://10.0.2.2:8081/index.bundle?platform=androidamp;dev=trueamp;minify=false:2522:34
__guard@http://1801/index.bundle?platform=androidamp;dev=trueamp;minify=false:2719:15
flushedQueue@http://1081/index.bundle?platform=androidamp;dev=trueamp;minify=false:2521:21
flushedQueue@[native code]
invokeCallbackAndReturnFlushedQueue@[native code]
  

Комментарии:

1. Я думаю, что я мог бы быть ` date: новая дата (Date.now() 60 * 1000), // не могли бы вы проверить это через 60 секунд?

Ответ №1:

переданный в date param, вероятно, не определен. отлаживайте, что именно передается localNotificationSchedule , это может быть вызвано какой-то ошибкой, которую вы допустили с жизненным циклом компонента

Комментарии:

1. ни одна дата не является недоопределенной. при наведении на него курсора мыши указывается (параметр) дата: любая. при переходе к другому проекту, в котором есть функциональные компоненты, он говорит то же самое, но работает с этими проектами

Ответ №2:

убедитесь, что ваша дата отформатирована в соответствии с требованиями функции, затем используйте: date: date

 notifSchedule = (todo, date) => {
PushNotification.localNotificationSchedule({
  id: todo.id,
  message: todo.title,
  date: date,
  allowWhileIdle: true,
  priority: 'high',
});
};
  

Ответ №3:

Поскольку вы заявляете, что используете компоненты на основе классов, я хочу добавить, что, пожалуйста, убедитесь, что вы правильно привязываете функции, иначе это не сработает. Функции на основе классов нуждаются в привязке функций, где функциональные делают это сами по себе. Иногда значения, возможно, кажутся неопределенными, потому что вы неправильно к ним подходите. ИЛИ отладьте детали, из которых вы извлекаете дату, или сделайте так

 console.log(details); //if undefined do some action to fill it

details amp;amp; details.date.getTime; //for conditional rendering 
  

Комментарии:

1. «Функции на основе классов нуждаются в привязке функций, где функциональные делают это сами по себе» вот, вероятно, причина, по которой это не работает, у меня нет никаких привязок или какого-либо состояния, которое как-то связано с датой

2. @iLightFPS вы должны предоставить дополнительную информацию о коде, чтобы точно определить реальную проблему. Потому что здесь нам просто нужно просмотреть предоставленную вами функцию.

3. обновлен код, и в моем state = {} есть только инициализация todoId и newTodo

4. Отладьте детали, из которых вы извлекаете дату, или сделайте так: «details amp;amp; details.date.getTime»

5. снова обновил код с полным сообщением об ошибке. у меня сейчас ничего не работает, пробовал большинство вещей без успеха

Ответ №4:

Я исправил это сам (todo, date), удалив todo и выполнив только (date),