ErrorBoundaryGroup
์ด ์ปดํฌ๋ํธ๋ก children์ธ <ErrorBoundary/>
๋ค์ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์ค์ฒฉ๋ <ErrorBoundaryGroup/>
์ children์ธ <ErrorBoundary/>
๋ค๋ ์์ <ErrorBoundaryGroup.Consumer/>
์ผ๋ก๋ reset๋ฉ๋๋ค.
import { ErrorBoundaryGroup, ErrorBoundary } from '@suspensive/react'
const Example = () => (
<ErrorBoundaryGroup>
{/* ErrorBoundaryGroup์ children์ธ ErrorBoundary๋ฅผ ๋ชจ๋ resetํฉ๋๋ค. ์ค์ฒฉ๋ ErrorBoundaryGroup๋ด์ ErrorBoundary๋ ๋ชจ๋ resetํฉ๋๋ค. */}
<ErrorBoundaryGroup.Consumer>
{(group) => <button onClick={group.reset}>Try again</button>}
</ErrorBoundaryGroup.Consumer>
<ErrorBoundary fallback={(props) => <>{props.error.message}</>}>
<ErrorAfter2s />
</ErrorBoundary>
<ErrorBoundaryGroup>
<ErrorBoundaryGroup.Consumer>
{(group) => <button onClick={group.reset}>Try again</button>}
</ErrorBoundaryGroup.Consumer>
<ErrorBoundary fallback={(props) => <>{props.error.message}</>}>
<ErrorAfter2s />
</ErrorBoundary>
</ErrorBoundaryGroup>
</ErrorBoundaryGroup>
)
props.blockOutside
๋ง์ฝ ์์ <ErrorBoundaryGroup/>
์ ์ํ ํ์ <ErrorBoundaryGroup/>
์ reset์ ๋ง๊ณ ์ถ๋ค๋ฉด blockOutside์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
import { ErrorBoundaryGroup, ErrorBoundary } from '@suspensive/react'
const Example = () => (
<ErrorBoundaryGroup>
<ErrorBoundaryGroup.Consumer>
{(group) => <button onClick={group.reset}>Try again</button>}
</ErrorBoundaryGroup.Consumer>
<ErrorBoundary fallback={(props) => <>{props.error.message}</>}>
<ErrorAfter2s />
</ErrorBoundary>
{/* blockOutside prop์ผ๋ก ์์ ErrorBoundaryGroup์ ์ํ reset์ ๋ง์ต๋๋ค. */}
<ErrorBoundaryGroup blockOutside>
<ErrorBoundaryGroup.Consumer>
{(group) => <button onClick={group.reset}>Try again</button>}
</ErrorBoundaryGroup.Consumer>
<ErrorBoundary fallback={(props) => <>{props.error.message}</>}>
<ErrorAfter2s />
</ErrorBoundary>
</ErrorBoundaryGroup>
</ErrorBoundaryGroup>
)
ErrorBoundaryGroup.with
ErrorBoundaryGroup.with
ErrorBoundaryGroup์ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ๋ํํ๋ HOC์
๋๋ค.
ErrorBoundaryGroup.with
๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๋ฅผ ์ฝ๊ฒ ๋ํํ ์ ์์ต๋๋ค.
import { ErrorBoundaryGroup } from '@suspensive/react'
const Example = ErrorBoundaryGroup.with({}, () => {
return <>...</>
})
ErrorBoundaryGroup.Consumer
ErrorBoundaryGroup.Consumer
๋ ErrorBoundaryGroup์ Consumer์
๋๋ค. ErrorBoundaryGroup.Consumer๋ฅผ ์ฌ์ฉํ๋ฉด ErrorBoundaryGroup์ reset์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
import { ErrorBoundaryGroup } from '@suspensive/react'
const Example = () => (
<ErrorBoundaryGroup>
<ErrorBoundaryGroup.Consumer>
{(group) => <button onClick={group.reset}>Try again</button>}
</ErrorBoundaryGroup.Consumer>
<ErrorBoundary>
<ErrorAfter2s />
</ErrorBoundary>
</ErrorBoundaryGroup>
)
useErrorBoundaryGroup
useErrorBoundaryGroup์ ์ฌ์ฉํ๋ฉด <ErrorBoundaryGroup/>
๋ด์ <ErrorBoundary/>
๋ค์ resetํ๋ ํจ์๋ฅผ ์ป์ ์ ์์ต๋๋ค.
import { useErrorBoundaryGroup } from '@suspensive/react'
const Example = () => {
const group = useErrorBoundaryGroup()
return <button onClick={group.reset}>Try again</button>
}