---
id: quick-start
title: Quick Start
---
This example very briefly illustrates the 3 core concepts of React Query:
- [Queries](./guides/queries)
- [Mutations](./guides/mutations)
- [Query Invalidation](./guides/query-invalidation)
```js
import {
useQuery,
useMutation,
useQueryClient,
QueryClient,
QueryClientProvider,
} from 'react-query'
import { getTodos, postTodo } from '../my-api'
// Create a client
const queryClient = new QueryClient()
function App() {
return (
// Provide the client to your App
)
}
function Todos() {
// Access the client
const queryClient = useQueryClient()
// Queries
const query = useQuery('todos', getTodos)
// Mutations
const mutation = useMutation(postTodo, {
onSuccess: () => {
// Invalidate and refetch
queryClient.invalidateQueries('todos')
},
})
return (
{query.data.map(todo => (
{todo.title}
))}
)
}
render(, document.getElementById('root'))
```
These three concepts make up most of the core functionality of React Query. The next sections of the documentation will go over each of these core concepts in great detail.