Skip to content

Commit 4b58a53

Browse files
authored
Merge pull request #258 from niceplugin/api/options-composition
문서 번역본 보완: api/options-composition.md
2 parents 570aa55 + 62a66d6 commit 4b58a53

File tree

2 files changed

+80
-46
lines changed

2 files changed

+80
-46
lines changed

ko-KR/src/api/composition-api-dependency-injection.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
## inject()
4646

47-
상위 컴포넌트 또는 `app.provide()`를 통해 앱에서 제공(Provide) 값을 주입(Inject)합니다.
47+
상위 컴포넌트 또는 [`app.provide()`](/api/application.html#app-provide)를 통해 앱에서 제공(Provide) 값을 주입(Inject)합니다.
4848

4949
- **타입**:
5050

@@ -55,7 +55,7 @@
5555
// 기본 값 정의 있음
5656
function inject<T>(key: InjectionKey<T> | string, defaultValue: T): T
5757
58-
// with factory
58+
// 팩토리 함수
5959
function inject<T>(
6060
key: InjectionKey<T> | string,
6161
defaultValue: () => T,

ko-KR/src/api/options-composition.md

Lines changed: 78 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# Options: Composition
1+
# 옵션: 컴포지션 {#options-composition}
22

33
## provide
44

5-
하위 컴포넌트에 주입할있는 값을 제공합니다.
5+
하위 컴포넌트에 주입(Inject)할있도록 값을 제공(Provide)합니다.
66

77
- **타입**:
88

@@ -14,9 +14,13 @@
1414

1515
- **세부 사항**:
1616

17-
`provide`[`inject`](#inject) 는 동일한 상위 체인에 있는 컴포넌트 계층 구조의 깊이에 관계없이 모든 하위 컴포넌트에 대한 의존성 주입기 역할을 할 수 있도록 사용됩니다.
17+
부모 컴포넌트가 값을 제공하면,
18+
컴포넌트 계층 구조의 깊이와 관계없이 모든 자식 컴포넌트에서 선택적으로 종속성을 주입받을 수 있도록,
19+
`provide`[`inject`](#inject)는 함께 사용됩니다.
1820

19-
`provide` 옵션은 객체 또는 객체를 반환하는 함수여야 합니다. 이 객체에는 하위 컴포넌트에 주입할 수 있는 속성이 포함되어 있습니다. 이 객체에는 Symbol을 키값으로 사용할 수 있습니다.
21+
`provide` 옵션은 객체이거나 객체를 반환하는 함수여야 합니다.
22+
이 객체는 자식 컴포넌트에 주입할 수 있는 속성으로 구성되며,
23+
심볼(Symbol)을 키로 사용할 수 있습니다.
2024

2125
- **예제**:
2226

@@ -33,7 +37,7 @@
3337
}
3438
```
3539

36-
함수를 사용하여 컴포넌트별 상태 제공:
40+
함수 사용법:
3741

3842
```js
3943
export default {
@@ -50,13 +54,15 @@
5054
}
5155
```
5256

53-
위 예시에서 제공된 `msg` 반응형(reactive)이 아닙니다. 자세한 내용은 [Working with Reactivity](/guide/components/provide-inject.html#working-with-reactivity)을 참조하십시오.
57+
위 예제에서 제공된 `msg`는 반응형이 아닙니다.
58+
자세한 내용은 [반응형으로 만들기](/guide/components/provide-inject.html#working-with-reactivity)를 참고하십시오.
5459

5560
- **참고**: [Provide / Inject](/guide/components/provide-inject.html)
5661

5762
## inject
5863

59-
조상 제공자(Provider)로부터 속성을 찾아 현재 컴포넌트에 주입할 속성을 선언합니다.
64+
상위 컴포넌트 또는 [`app.provide()`](/api/application.html#app-provide)를 통해 앱에서 제공(Provide)된 값 중,
65+
주입(Inject)할 속성을 선언합니다.
6066

6167
- **타입**:
6268

@@ -77,18 +83,24 @@
7783
7884
- **세부 사항**:
7985
80-
`inject` 옵션은 다음 중 하나여야 합니다:
86+
`inject` 옵션은 다음 중 하나입니다:
8187
82-
- 문자열 배열 또는
83-
- 객체의 키가 로컬 바인딩 이름이고 값이 다음 중 하나여야 합니다:
84-
- 사용 가능한 주입에서 검색할 키(문자열 또는 심볼) 또는
85-
- 객체:
86-
- `from` 속성은 사용 가능한 주입에서 검색할 키(문자열 또는 심볼)이며,
87-
- `default` 속성은 대체 값으로 사용됩니다. props 기본값과 유사하게 여러 컴포넌트 인스턴스 간의 값 공유를 피하기 위해 객체 유형에 팩토리 함수가 필요합니다.
88+
- 문자열로 이루어진 배열
89+
- 객체의 키는 인스턴스에 바인딩 될 이름이고, 값은 다음 중 하나입니다:
90+
- 문자열 또는 심볼로 되어있는 주입 가능한 속성의 키.
91+
- 다음 속성 중 하나 이상으로 이루어진 객체:
92+
- `from`: 문자열 또는 심볼로 되어있는 주입 가능한 속성의 키.
93+
- `default`: 대체 값으로 사용되며, props의 `default`와 유사.
94+
대체될 값이 객체 타입일 경우,
95+
컴포넌트의 여러 인스턴스 간 값의 참조가 공유되는 것을 피하기 위해 팩토리 함수를 사용해야 함.
8896
89-
일치하는 속성이나 기본값이 제공되지 않은 경우 주입된 속성은 `undefined`가 됩니다.
97+
일치하는 속성이나 기본값이 제공되지 않는 경우, 주입된 속성의 값은 `undefined`입니다.
9098
91-
주입된 바인딩은 반응형(reactive)이 아닙니다. 이것은 의도적입니다. 그러나 주입된 값이 반응형 객체인 경우 해당 객체의 속성은 반응형으로 유지됩니다. 자세한 내용은 [Working with Reactivity](/guide/components/provide-inject.html#working-with-reactivity)을 참조하세요.
99+
주입되어 바인딩된 값은 반응형이 아니며,
100+
이것은 의도적입니다.
101+
그러나 주입된 값이 반응형 객체인 경우,
102+
해당 객체의 속성은 반응형으로 유지됩니다.
103+
자세한 내용은 [반응형으로 만들기](/guide/components/provide-inject.html#working-with-reactivity)를 참고하십시오.
92104
93105
- **예제**:
94106
@@ -103,10 +115,10 @@
103115
}
104116
```
105117

106-
prop의 기본값으로 주입된 값 사용하기:
118+
주입된 값을 prop의 기본값으로 사용:
107119

108120
```js
109-
const Child = {
121+
export default {
110122
inject: ['foo'],
111123
props: {
112124
bar: {
@@ -118,10 +130,10 @@
118130
}
119131
```
120132

121-
주입된 값을 데이터 입력으로 사용:
133+
주입된 값을 데이터 입력값으로 사용:
122134

123135
```js
124-
const Child = {
136+
export default {
125137
inject: ['foo'],
126138
data() {
127139
return {
@@ -130,21 +142,22 @@
130142
}
131143
}
132144
```
133-
134-
주입은 기본값 설정 옵션을 제공합니다:
145+
146+
주입될 값에 기본값을 설정한 옵션을 제공:
135147

136148
```js
137-
const Child = {
149+
export default {
138150
inject: {
139151
foo: { default: 'foo' }
140152
}
141153
}
142154
```
143155

144-
다른 이름의 속성에서 주입해야 하는 경우 `from`을 사용하여 소스 속성을 나타냅니다:
156+
주입할 속성의 이름을 다르게 해야 할 경우,
157+
`from`을 사용하여 주입할 속성 표기:
145158

146159
```js
147-
const Child = {
160+
export default {
148161
inject: {
149162
foo: {
150163
from: 'bar',
@@ -154,10 +167,10 @@
154167
}
155168
```
156169

157-
prop 기본값과 유사하게 레퍼런스 값에 대해 팩토리 함수를 사용해야 합니다:
170+
팩토리 함수를 사용한 객체 타입의 기본값 지정:
158171

159172
```js
160-
const Child = {
173+
export default {
161174
inject: {
162175
foo: {
163176
from: 'bar',
@@ -183,12 +196,18 @@
183196

184197
- **세부 사항**:
185198

186-
`mixins` 옵션은 mixin 객체의 배열을 허용합니다. 이러한 믹스인 객체는 일반 인스턴스 객체와 같은 인스턴스 옵션을 포함할 수 있으며 특정 옵션 병합 논리를 사용하여 최종 옵션에 대해 병합됩니다. 예를 들어 믹스인에 `created` 훅이 있고 컴포넌트 자체에도 훅이 있는 경우 두 함수가 모두 호출됩니다.
199+
`mixins` 옵션은 믹스인 객체로 이루어진 배열입니다.
200+
믹스인 객체는 일반 인스턴스 객체와 같은 옵션을 포함할 수 있으며,
201+
특정 옵션 병합 로직을 사용하여 병합된 최종 옵션이 인스턴스에서 사용됩니다.
202+
예를 들어 믹스인에 `created` 훅이 있고, 컴포넌트에도 훅이 있으면,
203+
두 함수가 모두 호출됩니다.
187204

188-
믹스인 훅은 제공된 순서대로 호출되며 컴포넌트 자체 훅보다 먼저 호출됩니다.
205+
믹스인 훅은 제공된 순서대로 호출되며, 컴포넌트 자체 훅보다 먼저 호출됩니다.
189206

190-
:::warning 더 이상 권장되지 않습니다.
191-
Vue2 에서, 믹스인은 컴포넌트 로직의 재사용 가능한 청크를 생성하기 위한 기본 메커니즘이었습니다. 믹스인은 Vue3 에서 계속 지원되지만, [Composition API](/guide/reusability/composables.html) 를 활용하여 컴포넌트 코드 재사용하는 방식이 선호되고 권장하고 있습니다.
207+
:::warning 더 이상 권장되지 않음
208+
Vue 2에서 믹스인은 컴포넌트 로직의 재사용 가능한 청크를 생성하기 위한 기본 메커니즘이었습니다.
209+
Vue 3에서 믹스인은 계속 지원되지만,
210+
컴포넌트 간 코드 재사용을 위한 접근 방식으로 [컴포지션 API](/guide/reusability/composables.html)가 추천됩니다.
192211
:::
193212

194213
- **예제**:
@@ -200,20 +219,22 @@
200219
}
201220
}
202221

203-
createApp({
204-
created() {
205-
console.log(2)
206-
},
207-
mixins: [mixin]
208-
})
222+
export default {
223+
createApp({
224+
created() {
225+
console.log(2)
226+
},
227+
mixins: [mixin]
228+
})
229+
}
209230

210231
// => 1
211232
// => 2
212233
```
213234

214235
## extends
215236

216-
확장할 "기본 클래스" 컴포넌트 입니다.
237+
현재 컴포넌트를 확장(extend)할 "클래스 기반" 컴포넌트입니다.
217238

218239
- **타입**:
219240

@@ -225,20 +246,33 @@
225246

226247
- **세부 사항**:
227248

228-
한 컴포넌트가 다른 컴포넌트를 확장하여 해당 컴포넌트 옵션을 상속할 수 있습니다.
249+
B 컴포넌트 확장에 A 컴포넌트를 사용하면, A 컴포넌트의 옵션을 상속받을 수 있습니다.
250+
251+
From an implementation perspective, `extends` is almost identical to `mixins`. The component specified by `extends` will be treated as though it were the first mixin.
252+
253+
However, `extends` and `mixins` express different intents. The `mixins` option is primarily used to compose chunks of functionality, whereas `extends` is primarily concerned with inheritance.
229254

230-
구현의 관점에서 `extens``mixins`와 거의 동일합니다. `extends`로 지정된 컴포넌트는 첫 번째 믹스인인 것처럼 처리됩니다.
255+
As with `mixins`, any options will be merged using the relevant merge strategy.
231256

232-
그러나, `extends``mixins`는 다른 의도를 표현합니다. `mixins` 옵션은 주로 기능 덩어리를 구성하는 데 사용되는 반면, `extends`는 주로 상속과 관련이 있습니다.
257+
구현의 관점에서 `extens``mixins`와 거의 동일합니다.
258+
`extens`로 지정된 컴포넌트는 첫 번째 믹스인인 것처럼 처리됩니다.
233259

234-
`mixins`와 마찬가지로 모든 옵션은 관련 병합 전략을 사용하여 병합됩니다.
260+
그러나 `extens``mixins`는 구현된 목적이 다릅니다.
261+
주로 `mixins` 옵션은 기능 묶음을 구성하는데 사용되지만,
262+
`extens`는 상속과 관련됩니다.
263+
264+
`mixins`와 마찬가지로 `extends`의 모든 옵션은 관련 병합 로직을 사용하여 병합됩니다.
235265

236266
- **예제**:
237267

238268
```js
239-
const CompA = { ... }
269+
// CompB.vue 파일에서
270+
271+
import CompA from './CompA.vue'
240272

241-
const CompB = {
273+
export default {
274+
// CompB 컴포넌트는 CompA에 정의된,
275+
// 옵션 속성들을 상속받음
242276
extends: CompA,
243277
...
244278
}

0 commit comments

Comments
 (0)