У меня есть набор мутаций, которые запускают локальное состояние некоторых типов всплывающих окон. Они обычно настроены так:
openDialog: (_, variables, { cache }) => {
const data = {
popups: {
...popups,
dialog: {
id: 'dialog',
__typename: 'Dialog',
type: variables.type
}
}
};
cache.writeData({
data: data
});
return null;
}
И значения по умолчанию, которые я передаю, выглядят так:
const defaults = {
popups: {
__typename: TYPENAMES.POPUPS,
id,
message: null,
modal: null,
menu: null,
dialog: null
}
};
То, как они используются в моем коде React, с помощью компонента-оболочки Mutation, например:
const OPEN_ALERT_FORM = gql`
mutation AlertOpenDialog($type: String!) {
openDialog(type: $type) @client
}
`;
class Alert extends Component {
render() {
return (
<Mutation mutation={OPEN_ALERT_FORM} variables={{ type: ALERT_FORM }}>
{openDialog => {
return (
<Button
classes="alert-button"
onClick={openDialog}
label="Trigger Alert"
/>
);
}}
</Mutation>
);
}
}
Для моих различных всплывающих окон (у меня есть 3 или 4 разных, таких как menu
и modal
), мутации для их открытия и закрытия выглядят одинаково, только разные имена и содержание и т. Д. Но для диалогов, Я получаю эту ошибку, когда нажимаю на них:
Ошибка сети: отсутствует набор выбора для объекта типа Dialog, возвращаемый для диалогового окна поля запроса
... и затем запускающий компонент исчезает со страницы. Кроме того, как только это происходит, все другие типы всплывающих окон исчезают, когда вы пытаетесь щелкнуть по ним, и либо повторно выдает эту ошибку, либо говорите:
Uncaught Error: возникла перекрестная ошибка. У React нет доступа к фактическому объекту ошибки в разработке.
Я пытался переписать диалоги, чтобы соответствовать другим всплывающим типам, а также переписывал компоненты, но я все еще получаю эту ошибку. Похоже, это диалог + Аполлон.
Что может быть корнем этой проблемы? Это не может быть бэкэндом, потому что это касается только местного Аполлона. Я не видел эту ошибку раньше, и я не уверен, куда идти дальше.