Files
DefinitelyTyped/types/react-query/react-query-tests.ts
T
Łukasz Fiszer 1789f1a2ae Add types for react-query (#40312)
* Add types for react-query

* Add clearQueryCache export, fix typo in QueryOptions
2019-11-12 15:50:27 -08:00

67 lines
1.9 KiB
TypeScript

import { useMutation, useQuery } from "react-query";
const queryFn = () => Promise.resolve();
// Query - simple case
const querySimple = useQuery('todos',
() => Promise.resolve('test'));
querySimple.data; // $ExpectType string | null
querySimple.error; // $ExpectType Error | null
querySimple.isLoading; // $ExpectType boolean
querySimple.refetch(); // $ExpectType void
// Query Variables
const param = 'test';
const queryVariables = useQuery(['todos', {param}],
(variables) => Promise.resolve(variables.param === 'test'));
queryVariables.data; // $ExpectType boolean | null
queryVariables.refetch({variables: {param: 'foo'}}); // $ExpectType void
queryVariables.refetch({variables: {other: 'foo'}}); // $ExpectError
// Query with falsey query key
useQuery(false && ['foo', { bar: 'baz' }], queryFn);
// Query with query key function
useQuery(() => ['foo', { bar: 'baz' }], queryFn);
// Query with nested variabes
const queryNested = useQuery(['key', {
nested: {
props: [1, 2]
}
}], (variables) => Promise.resolve(variables.nested.props[0]));
queryNested.data; // $ExpectType number | null
// Simple mutation
const mutation = () => Promise.resolve(['foo', 1]);
const [mutate] = useMutation(mutation, {
refetchQueries: ['todos', ['todo', { id: 5 }], 'reminders'],
refetchQueriesOnFailure: false
});
mutate();
mutate(undefined, {
updateQuery: 'query',
waitForRefetchQueries: false
});
// Invalid mutatation funciton
useMutation((arg1: string, arg2: string) => Promise.resolve()); // $ExpectError
useMutation((arg1: string) => null); // $ExpectError
// Mutation with variables
const [mutateWithVars] = useMutation(
({param}: {param: number}) => Promise.resolve(Boolean(param)),
{
refetchQueries: ['todos', ['todo', { id: 5 }], 'reminders'],
refetchQueriesOnFailure: false
});
mutateWithVars({param: 1}, {
updateQuery: 'query',
waitForRefetchQueries: false
});
mutateWithVars({param: 'test'}); // $ExpectError