Skip to content

Commit 5e579e0

Browse files
committed
Revert "feat: add a warning for invalid arguments with suspense mode (vercel#1402)"
This reverts commit c703e6c.
1 parent 29eb89f commit 5e579e0

File tree

2 files changed

+5
-52
lines changed

2 files changed

+5
-52
lines changed

src/use-swr.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,6 @@ export const useSWRHandler = <Data = any, Error = any>(
7979
const data = isUndefined(cached) ? fallback : cached
8080
const error = cache.get(keyErr)
8181

82-
if (suspense && (!key || !fn)) {
83-
throw new Error('useSWR requires either key or fetcher with suspense mode')
84-
}
85-
8682
// A revalidation must be triggered when mounted if:
8783
// - `revalidateOnMount` is explicitly set to `true`.
8884
// - `isPaused()` returns `false`, and:

test/use-swr-suspense.test.tsx

Lines changed: 5 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,16 @@ import React, { ReactNode, Suspense, useEffect, useState } from 'react'
33
import useSWR, { mutate } from 'swr'
44
import { createResponse, sleep } from './utils'
55

6-
class ErrorBoundary extends React.Component<{ fallback?: ReactNode }> {
7-
state = { hasError: false, message: null }
8-
static getDerivedStateFromError(error: Error) {
6+
class ErrorBoundary extends React.Component<{ fallback: ReactNode }> {
7+
state = { hasError: false }
8+
static getDerivedStateFromError() {
99
return {
10-
hasError: true,
11-
message: error.message
10+
hasError: true
1211
}
1312
}
1413
render() {
1514
if (this.state.hasError) {
16-
return this.props.fallback || this.state.message
15+
return this.props.fallback
1716
}
1817
return this.props.children
1918
}
@@ -259,46 +258,4 @@ describe('useSWR - suspense', () => {
259258
expect(startRenderCount).toBe(2) // fallback + data
260259
expect(renderCount).toBe(1) // data
261260
})
262-
263-
it('should throw an error if key is a falsy value', async () => {
264-
// eslint-disable-next-line @typescript-eslint/no-empty-function
265-
jest.spyOn(console, 'error').mockImplementation(() => {})
266-
267-
function Page() {
268-
const { data } = useSWR(null, () => createResponse('SWR'), {
269-
suspense: true
270-
})
271-
return <div>hello, {data}</div>
272-
}
273-
render(
274-
<ErrorBoundary>
275-
<Suspense fallback={<div>fallback</div>}>
276-
<Page />
277-
</Suspense>
278-
</ErrorBoundary>
279-
)
280-
281-
screen.getByText('useSWR requires either key or fetcher with suspense mode')
282-
})
283-
284-
it('should throw an error if fetch is null', async () => {
285-
// eslint-disable-next-line @typescript-eslint/no-empty-function
286-
jest.spyOn(console, 'error').mockImplementation(() => {})
287-
288-
function Page() {
289-
const { data } = useSWR('suspense-11', null, {
290-
suspense: true
291-
})
292-
return <div>hello, {data}</div>
293-
}
294-
render(
295-
<ErrorBoundary>
296-
<Suspense fallback={<div>fallback</div>}>
297-
<Page />
298-
</Suspense>
299-
</ErrorBoundary>
300-
)
301-
302-
screen.getByText('useSWR requires either key or fetcher with suspense mode')
303-
})
304261
})

0 commit comments

Comments
 (0)