docs/framework/solid/guides/placeholder-query-data.md
function Todos() {
const todosQuery = useQuery(() => ({
queryKey: ['todos'],
queryFn: () => fetch('/todos'),
placeholderData: placeholderTodos,
}))
}
If the process for accessing a query's placeholder data is intensive or just not something you want to perform on every render, you can memoize the value:
function Todos() {
const placeholderData = createMemo(() => generateFakeTodos())
const todosQuery = useQuery(() => ({
queryKey: ['todos'],
queryFn: () => fetch('/todos'),
placeholderData: placeholderData(),
}))
}
const todosQuery = useQuery(() => ({
queryKey: ['todos', id],
queryFn: () => fetch(`/todos/${id}`),
placeholderData: (previousData, previousQuery) => previousData,
}))
function BlogPost(props) {
const queryClient = useQueryClient()
const blogPostQuery = useQuery(() => ({
queryKey: ['blogPost', props.blogPostId],
queryFn: () => fetch(`/blogPosts/${props.blogPostId}`),
placeholderData: () => {
// Use the smaller/preview version of the blogPost from the 'blogPosts'
// query as the placeholder data for this blogPost query
return queryClient
.getQueryData(['blogPosts'])
?.find((d) => d.id === props.blogPostId)
},
}))
}