#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),