mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-25 15:15:19 +00:00
fix(nuxt)!: refresh
to override previous requests by default (#8190)
This commit is contained in:
parent
6dcff8e428
commit
d862a6bfdd
@ -152,10 +152,10 @@ function next() {
|
|||||||
|
|
||||||
The key to making this work is to call the `refresh()` method returned from the `useFetch()` composable when a query parameter has changed.
|
The key to making this work is to call the `refresh()` method returned from the `useFetch()` composable when a query parameter has changed.
|
||||||
|
|
||||||
By default, `refresh()` will not make a new request if one is already pending. You can override any pending requests with the override option. Previous requests will not be cancelled, but their result will not update the data or pending state - and any previously awaited promises will not resolve until this new request resolves.
|
By default, `refresh()` will cancel any pending requests; their result will not update the data or pending state. Any previously awaited promises will not resolve until this new request resolves. You can prevent this behaviour by setting the `dedupe` option, which will instead return the promise for the currently-executing request, if there is one.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
refresh({ override: true })
|
refresh({ dedupe: true })
|
||||||
```
|
```
|
||||||
|
|
||||||
### `refreshNuxtData`
|
### `refreshNuxtData`
|
||||||
|
@ -30,7 +30,7 @@ type AsyncDataOptions<DataT> = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface RefreshOptions {
|
interface RefreshOptions {
|
||||||
override?: boolean
|
dedupe?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
type AsyncData<DataT, ErrorT> = {
|
type AsyncData<DataT, ErrorT> = {
|
||||||
|
@ -32,7 +32,7 @@ type UseFetchOptions = {
|
|||||||
type AsyncData<DataT> = {
|
type AsyncData<DataT> = {
|
||||||
data: Ref<DataT>
|
data: Ref<DataT>
|
||||||
pending: Ref<boolean>
|
pending: Ref<boolean>
|
||||||
refresh: (opts?: { override?: boolean }) => Promise<void>
|
refresh: (opts?: { dedupe?: boolean }) => Promise<void>
|
||||||
execute: () => Promise<void>
|
execute: () => Promise<void>
|
||||||
error: Ref<Error | boolean>
|
error: Ref<Error | boolean>
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ export interface AsyncDataExecuteOptions {
|
|||||||
* not be cancelled, but their result will not affect the data/pending state - and any
|
* not be cancelled, but their result will not affect the data/pending state - and any
|
||||||
* previously awaited promises will not resolve until this new request resolves.
|
* previously awaited promises will not resolve until this new request resolves.
|
||||||
*/
|
*/
|
||||||
override?: boolean
|
dedupe?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface _AsyncData<DataT, ErrorT> {
|
export interface _AsyncData<DataT, ErrorT> {
|
||||||
@ -122,7 +122,7 @@ export function useAsyncData<
|
|||||||
|
|
||||||
asyncData.refresh = asyncData.execute = (opts = {}) => {
|
asyncData.refresh = asyncData.execute = (opts = {}) => {
|
||||||
if (nuxt._asyncDataPromises[key]) {
|
if (nuxt._asyncDataPromises[key]) {
|
||||||
if (!opts.override) {
|
if (opts.dedupe === false) {
|
||||||
// Avoid fetching same key more than once at a time
|
// Avoid fetching same key more than once at a time
|
||||||
return nuxt._asyncDataPromises[key]
|
return nuxt._asyncDataPromises[key]
|
||||||
}
|
}
|
||||||
|
@ -15,14 +15,14 @@ if (count || data.value !== 1) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
timeout = 100
|
timeout = 100
|
||||||
const p = refresh()
|
const p = refresh({ dedupe: true })
|
||||||
|
|
||||||
if (process.client && (count !== 0 || data.value !== 1)) {
|
if (process.client && (count !== 0 || data.value !== 1)) {
|
||||||
throw new Error('count should start at 0')
|
throw new Error('count should start at 0')
|
||||||
}
|
}
|
||||||
|
|
||||||
timeout = 0
|
timeout = 0
|
||||||
await refresh({ override: true })
|
await refresh()
|
||||||
|
|
||||||
if (process.client && (count !== 1 || data.value !== 1)) {
|
if (process.client && (count !== 1 || data.value !== 1)) {
|
||||||
throw new Error('override should execute')
|
throw new Error('override should execute')
|
||||||
|
Loading…
Reference in New Issue
Block a user