You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
import { startTransition, unstable_addTransitionType } from 'react';
64
65
65
66
function Submit({action) {
@@ -78,6 +79,7 @@ function Submit({action) {
78
79
<CodeStepstep={1}>addTransitionType</CodeStep>을 <CodeStepstep={2}>startTransition</CodeStep>의 범위 내에서 호출하면, React는 해당 트랜지션에 <CodeStepstep={3}>submit-click</CodeStep>을 원인으로 연결합니다.
79
80
80
81
현재 트랜지션 타입은 원인에 따라 서로 다른 애니메이션을 커스터마이즈하는 데 사용할 수 있습니다. 사용할 수 있는 방식은 세 가지입니다:
82
+
81
83
-[브라우저 view transition 타입으로 애니메이션 커스텀하기](#customize-animations-using-browser-view-transition-types)
82
84
-[`View Transition` 클래스로 애니메이션 커스텀하기](#customize-animations-using-view-transition-class)
83
85
-[`ViewTransition`이벤트로 애니메이션 커스텀하기](#customize-animations-using-viewtransition-events)
@@ -120,7 +122,6 @@ startTransition(() => {
120
122
121
123
활성화된 ViewTransition에서 타입에 따라 애니메이션을 커스터마이즈하려면, View Transition 클래스에 객체를 전달하면 됩니다.
122
124
123
-
124
125
```js
125
126
functionComponent() {
126
127
return (
@@ -139,7 +140,7 @@ startTransition(() => {
139
140
});
140
141
```
141
142
142
-
여러 타입이 매칭되면 값들이 결합되고, 매칭되는 타입이 없으면 "default" 엔트리가 사용됩니다. 만약 값이 "none"이면 ViewTransition이 비활성화되어 이름이 할당되지 않습니다.
143
+
여러 타입이 매칭되면 값들이 결합됩니다. 매칭되는 타입이 없으면 "default" 엔트리가 사용됩니다. 어떤 타입이라도 값이 none이면 해당 값이 우선하며 ViewTransition은 비활성화되어(이름이 할당되지 않습니다).
143
144
144
145
이 방식은 enter/exit/update/layout/share props와 결합하여 트리거 종류와 트랜지션 타입에 따라 동작을 맞출 수 있습니다.
145
146
@@ -171,6 +172,7 @@ View Transition 이벤트를 활용하여 타입에 따라 활성화된 `ViewTra
Copy file name to clipboardExpand all lines: src/content/reference/react/apis.md
+1-2Lines changed: 1 addition & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,9 +7,7 @@ title: "내장 React API"
7
7
[Hook](/reference/react/hooks)과 [컴포넌트](/reference/react/components) 외에도 `react` 패키지는 컴포넌트를 정의하는데 유용한 몇 가지 API를 가지고 있습니다. 이 페이지는 최신 React API를 모두 나열합니다.
8
8
9
9
</Intro>
10
-
11
10
{/*React 영문 공식 문서에 반영되지 않은 내용 임의로 수정하여 반영하였습니다. `cache` 및 `use`에 대한 내용 설명을 제외하고 수정하지 말아주세요*/}
12
-
13
11
---
14
12
*[`act`](/reference/react/act)를 통해 테스트에서 렌더링이나 상호작용을 감싸서 관련된 업데이트가 모두 처리된 뒤에 검증합니다.
15
13
*[`cache`](/reference/react/cache)를 통해 가져온 데이터나 연산의 결과를 캐싱합니다.
@@ -18,6 +16,7 @@ title: "내장 React API"
18
16
*[`lazy`](/reference/react/lazy)를 통해 컴포넌트가 처음 렌더링될 때까지 해당 컴포넌트의 코드를 로딩하는 것을 지연합니다.
19
17
*[`memo`](/reference/react/memo)를 통해 동일한 props일 경우 컴포넌트가 다시 렌더링되지 않도록 최적화합니다. 주로 [`useMemo`](/reference/react/useMemo), [`useCallback`](/reference/react/useCallback)과 함께 사용됩니다.
20
18
*[`startTransition`](/reference/react/startTransition)를 통해 상태 업데이트를 “덜 긴급한 작업”으로 표시하여 UI의 반응성을 유지합니다. [`useTransition`](/reference/react/useTransition)과 유사합니다.
19
+
*[`use`](/reference/react/use)는 Promise나 Context와 같은 데이터를 참조하는 React Hook입니다.
21
20
*[`taintObjectReference`](/reference/react/experimental_taintObjectReference)를 통해 `user` 객체와 같은 특정한 객체 인스턴스를 클라이언트 컴포넌트로 전송하는 것을 방지합니다.
22
21
*[`taintUniqueValue`](/reference/react/experimental_taintUniqueValue)를 통해 패스워드, 키 또는 토큰과 같은 고유 값을 클라이언트 컴포넌트로 전송하는 것을 방지합니다.
23
22
*[`addTransitionType`](/reference/react/addTransitionType)를 통해, 트랜지션이 발생한 원인을 상세히 나타냅니다.
Owner Stack을 사용할 수 없는 경우, `null`이 반환됩니다. ([문제해결: Owner Stack이 `null`인 경우](#the-owner-stack-is-null))
51
-
51
+
3
52
52
#### 주의 사항 {/*caveats*/}
53
53
54
54
- Owner Stack은 개발 환경에서만 사용할 수 있습니다. `captureOwnerStack`은 개발 환경 밖에서는 항상 `null`을 반환합니다.
@@ -57,7 +57,7 @@ Owner Stack을 사용할 수 없는 경우, `null`이 반환됩니다. ([문제
57
57
58
58
#### Owner Stack vs Component Stack {/*owner-stack-vs-component-stack*/}
59
59
60
-
Owner Stack은 [`errorInfo.componentStack` in `onUncaughtError`](/reference/react-dom/client/hydrateRoot#show-a-dialog-for-uncaught-errors)와 같은 리액트 에러 핸들러에서 사용할 수 있는 Component Stack과 다릅니다.
60
+
Owner Stack은 [`errorInfo.componentStack` in `onUncaughtError`](/reference/react-dom/client/hydrateRoot#show-a-dialog-for-uncaught-errors)와 같은 리액트 오류 핸들러에서 사용할 수 있는 Component Stack과 다릅니다.
`SubComponent`에서 에러가 날 때, 에러의 Component Stack은 다음과 같을 수 있습니다.
139
+
`SubComponent`에서 오류가 날 수 있습니다.
140
+
그 오류의 Component Stack은 다음과 같을 것입니다.
140
141
141
142
```
142
143
at SubComponent
@@ -146,23 +147,24 @@ at main
146
147
at React.Suspense
147
148
at App
148
149
```
149
-
그러나 Owner Stack은 이렇게만 읽습니다.
150
+
151
+
그러나, Owner Stack에는 다음 내용만 나타납니다.
150
152
151
153
```
152
154
at Component
153
155
```
154
156
155
-
`App`이나 DOM 컴포넌트들(예: `fieldset`)은 이 스택에 포함되지 않습니다. 왜냐하면 이들은 `SubComponent`를 포함하는 노드를 "생성하는" 데에 기여하지 않기 때문입니다. `App`과 DOM 컴포넌트들은 노드를 전달할 뿐입니다. `App`은 `<SubComponent />`를 통해 `SubComponent`를 포함한 노드를 생성하는 `Component`와 달리 `children` 노드만 렌더링합니다.
157
+
`App`과 DOM 컴포넌트들(예: `fieldset`)은 `SubComponent`를 포함하는 노드를 "생성하는" 데에 기여하지 않기 때문 이 스택에 포함되지 않습니다. `App`과 DOM 컴포넌트들은 노드를 전달할 뿐입니다. `App`은 `<SubComponent />`를 통해 `SubComponent`를 포함한 노드를 생성하는 `Component`와 달리 `children` 노드만 렌더링합니다.
156
158
157
-
또한, `Navigation`이나`legend`도`<SubComponent />`를 포함하는 노드의 형제가 아니기 때문에, 스택에 없습니다.
159
+
`Navigation`과`legend`는`<SubComponent />`를 포함하는 노드의 형제 요소이기 때문에 스택에 전혀 포함되지 않습니다.
158
160
159
-
`SubComponent`는 이미 호출 스택에 포함되어 있어서 Owner Stack에 나오지 않습니다.
161
+
`SubComponent`는 이미 호출 스택에 포함되어 있기 떄문에 Owner Stack에 나타나지 않습니다.
@@ -181,7 +183,7 @@ console.error = function patchedConsoleError(...args) {
181
183
};
182
184
```
183
185
184
-
<CodeStepstep={1}>`console.error`</CodeStep> 호출을 가로채서 에러 오버레이에 표시하고 싶다면, <CodeStepstep={2}>`captureOwnerStack`</CodeStep>을 호출하여 `OwnerStack`을 포함할 수 있습니다.
186
+
<CodeStepstep={1}>`console.error`</CodeStep> 호출을 가로채서 오류 오버레이에 표시하고 싶다면, <CodeStepstep={2}>`captureOwnerStack`</CodeStep>을 호출하여 `OwnerStack`을 포함할 수 있습니다.
185
187
186
188
<Sandpack>
187
189
@@ -349,7 +351,7 @@ export default function App() {
349
351
350
352
### Owner Stack이 `null`인 경우 {/*the-owner-stack-is-null*/}
351
353
352
-
`captureOwnerStack`이 React가 제어하지 않는 함수 바깥에서 호출됐을 경우, 예를 들어 `setTimeout` 콜백, `fetch` 호출 후, 커스텀 DOM 이벤트 핸들러 등에서는 Owner Stack이 null이 됩니다. 렌더링 중이나 이펙트, React 이벤트 핸들러, React 에러 핸들러(예: `hydrateRoot#options.onCaughtError`) 내에서만 생성됩니다.
354
+
`captureOwnerStack`이 React가 제어하지 않는 함수 바깥에서 호출됐을 경우, 예를 들어 `setTimeout` 콜백, `fetch` 호출 후, 커스텀 DOM 이벤트 핸들러 등에서는 Owner Stack이 null이 됩니다. 렌더링 중이나 이펙트, React 이벤트 핸들러, React 오류 핸들러(예: `hydrateRoot#options.onCaughtError`) 내에서만 생성됩니다.
353
355
354
356
아래 예시에서, 버튼을 클릭하면 빈 Owner Stack이 로그로 출력됩니다. 그 이유는 `captureOwnerStack`이 커스텀 이벤트 핸들러 내에서 호출되었기 때문입니다. Owner Stack은 더 이른 시점, 예를 들어 이펙트 내부에서 `captureOwnerStack`를 호출하도록 이동시켜야 올바르게 캡처할 수 있습니다.
0 commit comments