+ | {props.context} |
+ {props.query.data?.name} |
+ {String(props.query.isFetching)} |
+ {String(props.query.isFetched)} |
+ {String(props.query.isPending)} |
+ {String(props.query.isRefetching)} |
+ {String(props.query.isLoading)} |
+ {String(props.query.isStale)} |
+ {String(props.query.isSuccess)} |
+ {String(props.query.isError)} |
+ {String(props.query.error)} |
+ {String(props.query.fetchStatus)} |
+ {String(props.query.dataUpdatedAt)} |
+
+ )
+}
diff --git a/package.json b/package.json
index 97c248e8a3..7722ad7ae5 100644
--- a/package.json
+++ b/package.json
@@ -92,7 +92,7 @@
"rollup-plugin-visualizer": "^5.9.0",
"rollup-preset-solid": "^1.4.0",
"semver": "^7.3.8",
- "solid-js": "^1.5.7",
+ "solid-js": "^1.6.13",
"solid-testing-library": "^0.3.0",
"stream-to-array": "^2.3.0",
"ts-node": "^10.9.1",
diff --git a/packages/solid-query/package.json b/packages/solid-query/package.json
index 731d51e193..6e20777c55 100644
--- a/packages/solid-query/package.json
+++ b/packages/solid-query/package.json
@@ -54,7 +54,7 @@
"@tanstack/query-core": "workspace:*"
},
"peerDependencies": {
- "solid-js": "^1.6.2"
+ "solid-js": "^1.6.13"
},
"peerDependenciesMeta": {}
}
diff --git a/packages/solid-query/src/createBaseQuery.ts b/packages/solid-query/src/createBaseQuery.ts
index f3bec166fd..2688e292a5 100644
--- a/packages/solid-query/src/createBaseQuery.ts
+++ b/packages/solid-query/src/createBaseQuery.ts
@@ -18,7 +18,6 @@ import {
createResource,
on,
onCleanup,
- onMount,
} from 'solid-js'
import { createStore, unwrap } from 'solid-js/store'
import { useQueryClient } from './QueryClientProvider'
@@ -64,7 +63,20 @@ export function createBaseQuery<
) => {
return observer.subscribe((result) => {
notifyManager.batchCalls(() => {
- const unwrappedResult = { ...unwrap(result) }
+ const query = observer.getCurrentQuery()
+ const unwrappedResult = {
+ ...unwrap(result),
+
+ // hydrate() expects a QueryState object, which is similar but not
+ // quite the same as a QueryObserverResult object. Thus, for now, we're
+ // copying over the missing properties from state in order to support hydration
+ dataUpdateCount: query.state.dataUpdateCount,
+ fetchFailureCount: query.state.fetchFailureCount,
+ fetchFailureReason: query.state.fetchFailureReason,
+ fetchMeta: query.state.fetchMeta,
+ isInvalidated: query.state.isInvalidated,
+ }
+
if (unwrappedResult.isError) {
if (process.env['NODE_ENV'] === 'development') {
console.error(unwrappedResult.error)
@@ -178,13 +190,17 @@ export function createBaseQuery<
}
})
- onMount(() => {
- observer.setOptions(defaultedOptions, { listeners: false })
- })
-
- createComputed(() => {
- observer.setOptions(client().defaultQueryOptions(options()))
- })
+ createComputed(
+ on(
+ () => client().defaultQueryOptions(options()),
+ () => observer.setOptions(client().defaultQueryOptions(options())),
+ {
+ // Defer because we don't need to trigger on first render
+ // This only cares about changes to options after the observer is created
+ defer: true,
+ },
+ ),
+ )
createComputed(
on(
@@ -209,10 +225,8 @@ export function createBaseQuery<
target: QueryObserverResult