Обновите нижнее смещение в ответном тост-сообщении. ⇐ IOS
Обновите нижнее смещение в ответном тост-сообщении.
В настоящее время поведение всплывающего уведомления работает не так, как я ожидал, поэтому я объясню.
Правильное поведение: например, у меня есть 3 страницы. Итак, со страницы 1 всплывающее уведомление появляется с видимостьюTime(duration) 6000 (6 секунд), поэтому до истечения времени продолжительности или до того, как всплывающее сообщение исчезнет, я меняю страницу на страницу 2, чтобы она все равно должна видеть всплывающее сообщение с обновленным значением нижнего смещения, потому что время еще не иссяк. Тогда, например, время истечет, прежде чем я перейду на страницу 3, он не должен повторно отображать всплывающее уведомление, а вместо этого ничего не делать, потому что это только 1 всплывающее сообщение.
Поведение на данный момент: например, у меня есть 3 страницы. Таким образом, со страницы 1 всплывающее сообщение появляется с тем же временем видимости, а затем я подождал, пока истечет время видимости, затем изменил страницу на страницу 2, она повторно отображает тост, а также снова сбрасывает время видимости на 6 секунд, поэтому каждый раз, когда я меняю страницу на на определенной странице тост продолжает всплывать там, где не должен. Должно обновляться только нижнее смещение
вот мой код
useEffect(() => { const handleStateChange: EventListenerCallback< КартаНавигацииКонтейнерСобытий, 'состояние' > = событие => { константное состояние = event.data.state; // это можно будет использовать позже const маршруты = NavigationContainerRef?.current?.getCurrentRoute()?.name; если (состояние) { пусть _toastPosition = 0; переключатель (маршруты) { случай «Страница1»: случай «Страница2»: случай «Страница3»: случай «Страница4»: случай «Страница5»: _toastPosition = 130; перерыв; } setToastPosition(_toastPosition); } }; const NavigationRef = NavigationContainerRef?.current; если (navigationRef) { NavigationRef.addListener('state', handleStateChange); } возврат () => { если (navigationRef) { NavigationRef.removeListener('state', handleStateChange); } }; }, [navigationContainerRef]); useEffect(() => { если (navigationContainerRef?.current) { если ( NavigationContainerRef.current .getState() ?.routes.some(route => Route.name === 'Уведомление') ) { // уже показывает экран уведомлений (или его дочерний элемент), // нет необходимости показывать тост Тост.скрыть(); //остальное продолжать не нужно возвращаться; } } если (toastContentAvailable) { console.log('Вас снова вызывают сюда!'); Toast.show({ введите: 'customToast', text1: `${numOfUnreadNotifications}`, // Передаем текстовое содержимое напрямую текст2: уведомлениеToastSubtitle, позиция: «низ», onPress: onNotificationToastView, дноСмещение: тостПозиция, Время видимости: TOAST_DURATION, }); } еще { console.log('Здесь ноль!'); Тост.скрыть(); } }, [ навигацияКонтейнерСсылка, уведомлениеToastSubtitle, numOfUnreadNotifications, onNotificationToastView, тостContentAvailable, тостПозиция, ]); Итак, есть ли способ получить оставшуюся продолжительность, чтобы я мог просто поместить оставшуюся продолжительность в видимостьTime, чтобы даже если он показывает новый экземпляр всплывающего уведомления, у него оставалось только видимое время оставшейся продолжительности от первого тост, тогда у меня просто будет условие: если оставшаяся продолжительность меньше 0, что-то в этом роде, то не показывать toast.show()
В настоящее время поведение всплывающего уведомления работает не так, как я ожидал, поэтому я объясню.
Правильное поведение: например, у меня есть 3 страницы. Итак, со страницы 1 всплывающее уведомление появляется с видимостьюTime(duration) 6000 (6 секунд), поэтому до истечения времени продолжительности или до того, как всплывающее сообщение исчезнет, я меняю страницу на страницу 2, чтобы она все равно должна видеть всплывающее сообщение с обновленным значением нижнего смещения, потому что время еще не иссяк. Тогда, например, время истечет, прежде чем я перейду на страницу 3, он не должен повторно отображать всплывающее уведомление, а вместо этого ничего не делать, потому что это только 1 всплывающее сообщение.
Поведение на данный момент: например, у меня есть 3 страницы. Таким образом, со страницы 1 всплывающее сообщение появляется с тем же временем видимости, а затем я подождал, пока истечет время видимости, затем изменил страницу на страницу 2, она повторно отображает тост, а также снова сбрасывает время видимости на 6 секунд, поэтому каждый раз, когда я меняю страницу на на определенной странице тост продолжает всплывать там, где не должен. Должно обновляться только нижнее смещение
вот мой код
useEffect(() => { const handleStateChange: EventListenerCallback< КартаНавигацииКонтейнерСобытий, 'состояние' > = событие => { константное состояние = event.data.state; // это можно будет использовать позже const маршруты = NavigationContainerRef?.current?.getCurrentRoute()?.name; если (состояние) { пусть _toastPosition = 0; переключатель (маршруты) { случай «Страница1»: случай «Страница2»: случай «Страница3»: случай «Страница4»: случай «Страница5»: _toastPosition = 130; перерыв; } setToastPosition(_toastPosition); } }; const NavigationRef = NavigationContainerRef?.current; если (navigationRef) { NavigationRef.addListener('state', handleStateChange); } возврат () => { если (navigationRef) { NavigationRef.removeListener('state', handleStateChange); } }; }, [navigationContainerRef]); useEffect(() => { если (navigationContainerRef?.current) { если ( NavigationContainerRef.current .getState() ?.routes.some(route => Route.name === 'Уведомление') ) { // уже показывает экран уведомлений (или его дочерний элемент), // нет необходимости показывать тост Тост.скрыть(); //остальное продолжать не нужно возвращаться; } } если (toastContentAvailable) { console.log('Вас снова вызывают сюда!'); Toast.show({ введите: 'customToast', text1: `${numOfUnreadNotifications}`, // Передаем текстовое содержимое напрямую текст2: уведомлениеToastSubtitle, позиция: «низ», onPress: onNotificationToastView, дноСмещение: тостПозиция, Время видимости: TOAST_DURATION, }); } еще { console.log('Здесь ноль!'); Тост.скрыть(); } }, [ навигацияКонтейнерСсылка, уведомлениеToastSubtitle, numOfUnreadNotifications, onNotificationToastView, тостContentAvailable, тостПозиция, ]); Итак, есть ли способ получить оставшуюся продолжительность, чтобы я мог просто поместить оставшуюся продолжительность в видимостьTime, чтобы даже если он показывает новый экземпляр всплывающего уведомления, у него оставалось только видимое время оставшейся продолжительности от первого тост, тогда у меня просто будет условие: если оставшаяся продолжительность меньше 0, что-то в этом роде, то не показывать toast.show()
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Многострочный комментарий в ответном сообщении с использованием Graph API в C#
Anonymous » » в форуме C# - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-