При странной проблеме передачи переменных в хук useQuery.
Запрос:
const GET_USER_BY_ID= gql`
query($id: ID!) {
getUser(id: $id) {
id
fullName
role
}
}
`;
Вызов запроса:
const DisplayUser: React.FC<{ id: string }> = ({ id }) => {
const { data, error } = useQuery(GET_USER_BY_ID, {
variables: { id },
});
return <div>{JSON.stringify({ data, error })}</div>;
};
Рендеринг компонента:
<DisplayUser id="5e404fa72b819d1410a3164c" />
Это приводит к ошибке:
"Argument \"id\" of required type \"ID!\" was provided the variable \"$id\" which was not provided a runtime value."
Вызов запроса из GraphQL Playground возвращает ожидаемый результат:
{
"data": {
"getUser": {
"id": "5e404fa72b819d1410a3164c",
"fullName": "Test 1",
"role": "USER"
}
}
}
И вызов запроса без переменной, но вместо этого жесткое кодирование id:
const GET_USER_BY_ID = gql`
query {
getUser(id: "5e404fa72b819d1410a3164c") {
id
fullName
role
}
}
`;
const DisplayUser: React.FC = () => {
const { data, error } = useQuery(GET_USER_BY_ID);
return <div>{JSON.stringify({ data, error })}</div>;
};
Также возвращает ожидаемый результат.
Я также пытался протестировать аналогичный запрос, который принимает firstName: String!
в качестве параметра, который также приводит к ошибке говоря, что переменной не было предоставлено значение времени выполнения. Этот запрос также работает должным образом при жестком кодировании значения в строке запроса.
Этот проект был запущен сегодня и использует "apollo-boost": "^0.4.7"
, "graphql": "^14.6.0"
и "react-apollo": "^3.1.3"
.