Так что это то, что я пытаюсь сделать. Я создал глобальный контекст уведомлений с редуктором для изменения состояния.
Моя проблема сейчас заключается в том, что я использую ловушки Apollo для выполнения запроса useQuery
, и когда возникает ошибка, я хочу показать ее в моих глобальных уведомлениях.
Так что для этого мне нужно отправить на редуктор, чтобы показать уведомление, изменить заголовок и сообщение в уведомлении.
Это вызывает изменение состояния на глобальный контекст уведомления, который запускает повторное рендеринг, который снова запускает useQuery
. Все это вызывает бесконечное повторное рендеринг, если вы каждый раз получаете сообщение об ошибке.
Есть ли у кого-нибудь предложение создать глобальную систему уведомлений, которая могла бы работать для этого?
Единственное решение, которое я оставил это импортировать уведомление на каждой странице, где мне нужно уведомление.
Код:
const [state, dispatch] = useContext(NotificationsContext);
const { loading, error, data } = useQuery(GET_USERS);
useEffect(() => {
if (error) {
dispatch({
type: 'ERROR',
payload: {
title: 'Query Error',
subtitle: error.message,
},
});
}
if (!loading && data) {
const newData = [];
data.getUsers.users.forEach((user) => {
const newUserRow = {};
headers.forEach((header) => newUserRow[header] = user[header]);
newData.push(newUserRow);
});
setRows(newData);
}
}, []);