Передача аргумента мутации React Apollo - PullRequest
0 голосов
/ 18 июня 2019

У меня проблемы, когда мутация не отправляет ни одного аргумента. Моя мутация кажется правильной, поскольку ошибка, которую я получаю от сервера, заключается в том, что он не находит пользователя, а не имеет проблемы с синтаксисом, например 400.

export const LOGIN = gql`
    mutation signIn($email: String!, $password: String!){
        signIn(login: $email, password: $password) {
            token
        }
    }
`;

Я подтвердил, что переменные верны в локальном состоянии. Я также подтвердил, что отправка учетных данных через Apollo DevTools возвращает правильный токен. Вот соответствующий бит мутации.

<Mutation
    mutation={LOGIN}
    variables={{
        email: state.auth.email,
        password: state.auth.password
    }}
    onError={(e) => {
        console.log(state.auth); // to confirm the state data is correct
        console.log(e);
    }}
    update={(store, { data }) => {
        dispatch({
            type: 'login',
            value: data.token
        })
    }}
>

В этот момент я в замешательстве и разочарован. Любая помощь приветствуется.

РЕДАКТИРОВАТЬ - это кажется страннее, чем я ожидал. Если я жестко закодирую значения в аргументе переменной мутации, он будет работать правильно.

variables={{
    email: "some-valid-email@website.com",
    password: "some-valid-password"
}}

И все же, когда я передаю данные из состояния, которое происходит через useContext, они ломаются.

const context = React.useContext(AppContext);
console.log(context.auth.email, context.auth.password); // logs the same valid email and password

1 Ответ

0 голосов
/ 18 июня 2019

Это похоже на проблему с Apollo и React.useContext (или useReducer)

Если у меня есть контекст, такой как:

const context = React.useContext(AppContext);

и я передаю контекст (который содержит адрес электронной почты / пароль) в переменную GraphQL, такую ​​как:

        variables={context.auth}

... это работает.

Однако создание экземпляров переменных по отдельности, похоже, не работает.

НЕ РАБОТАЕТ:

let email = context.auth.email
let password = context.auth.password

variables={{email, password}}

Это гоча? Я не уверен. Но по крайней мере у меня пока есть обходной путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...