Код: Выделить всё
getProductBySlugКод: Выделить всё
getProductById
Код: Выделить всё
, productSlug]Код: Выделить всё
, productId][*] Любые крючки, которые используют продукты [< /code>
Код: Выделить всё
, productId]Код: Выделить всё
, productSlug]Любые крючки, которые используют продукты [
Код: Выделить всё
, productSlug]Код: Выделить всё
, productId]вручную обновлять / недействителен оба клавиша в каждом крючке, который использует любой ключ. Это включает в себя много дублированной логики и является очевидным потенциальным источником ошибок. запускается только тогда, когда запрос с использованием [ проектов
Код: Выделить всё
, projectSlug]< /li>
< /ol>
Код: Выделить всё
const useCopyProjectToCacheQuery = (project: Project) => {
const queryClient = useQueryClient()
return useQuery({
queryKey: projectKeyFactory.project(project?.id),
queryFn: async () => {
// Check the cache for data stored under the project's id
const projectDataById = await queryClient.getQueryData(
projectKeyFactory.project(project.id)
)
return isNil(projectDataById)
? // If the data isn't found, copy the data from the project's slug key
await queryClient.getQueryData(
projectKeyFactory.project(project.id)
)
: // Otherwise get it from the server
await findProjectByIdAction(project.id)
},
enabled: isNotNil(project),
})
}
Код: Выделить всё
, projectId]Код: Выделить всё
, projectSlug]Из применения мутаций в кеш не поощряются и не будут стрелять из обратных вызовов подписки < /p>
< /blockquote>
Так что правильно способ справиться с этой ситуацией?
Подробнее здесь: https://stackoverflow.com/questions/794 ... eact-query
Мобильная версия