๐ŸŽ‰ Suspensive v2๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๋”๋ณด๊ธฐ โ†’
๋ฌธ์„œ๋ณด๊ธฐ
@suspensive/react
<AsyncBoundary/> (deprecated)

AsyncBoundary (deprecated)

๐Ÿšซ

deprecated: <Suspense/>, <ErrorBoundary/>์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜์„ธ์š”

<AsyncBoundary/>์„ @suspensive/react์˜ <Suspense/>์™€ <ErrorBoundary/>์„ ํ•œ๋ฒˆ์— ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ž˜ํ•‘ํ•œ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

import { AsyncBoundary } from '@suspensive/react'
 
const Example = () => (
  <AsyncBoundary
    pendingFallback={<Loading />}
    rejectedFallback={(props) => (
      <>
        <button onClick={props.reset}>Try again</button>
        {props.error.message}
      </>
    )}
    onReset={() => console.log('reset')}
    onError={(error) => console.log(error)}
  >
    <Children />
  </AsyncBoundary>
)

AsyncBoundaryProps

๐Ÿšซ

deprecated: SuspenseProps, ErrorBoundaryProps์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜์„ธ์š”

<AsyncBoundary/> Props์˜ ํƒ€์ž…์€ <Suspense/>์™€ <ErrorBoundary/>๋ฅผ ์กฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.

type AsyncBoundaryProps = Omit<SuspenseProps, 'fallback'> &
  Omit<ErrorBoundaryProps, 'fallback'> & {
    pendingFallback?: SuspenseProps['fallback']
    rejectedFallback: ErrorBoundaryProps['fallback']
  }

withAsyncBoundary

๐Ÿšซ

deprecated: wrap.ErrorBoundary().Suspense().on์„ ๋Œ€์‹  ์‚ฌ์šฉํ•˜์„ธ์š”

withAsyncBoundary๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ๋ฅผ <AsyncBoundary/>๋กœ ์‰ฝ๊ฒŒ ๋ž˜ํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด withAsyncBoundary๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฅผ ๊ฐ์‹ธ๊ธฐ ์œ„ํ•ด ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. withAsyncBoundary์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ž๋Š” children์ด ์—†๋Š” <AsyncBoundary/>์˜ props์ž…๋‹ˆ๋‹ค.

import { withAsyncBoundary } from '@suspensive/react'
 
const Example = withAsyncBoundary(
  function Component() {
    return <>...</>
  },
  {
    pendingFallback: <Loading />,
    rejectedFallback: (props) => (
      <>
        <button onClick={props.reset}>Try again</button>
        {props.error.message}
      </>
    ),
    onReset: () => console.log('reset'),
    onError: (error) => console.log(error),
  }
)