Skip to content

Commit

Permalink
Update ko (#53)
Browse files Browse the repository at this point in the history
* fix: change redirection link (#2615)

* fix(composables): useFetch() playground example (#2659)

* docs: add explanation for scoped slots with render functions (#2670)

* add more details for watcher flush timing

* style: update event-handling.md avoid horizontal scrolling (#2678)
  • Loading branch information
niceplugin authored Jan 29, 2024
1 parent eae0ce5 commit e529cb6
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/about/team/members-core.json
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@
},
{
"label": "vuequery",
"url": "https://github.com/vuequery"
"url": "https://github.com/phanan/vuequery"
},
{
"label": "vue-google-signin-button",
Expand Down
5 changes: 3 additions & 2 deletions src/guide/essentials/event-handling.md
Original file line number Diff line number Diff line change
Expand Up @@ -256,8 +256,9 @@ methods: {
`.capture`, `.once` ๋ฐ `.passive` ์ˆ˜์‹์–ด๋Š” [๋„ค์ดํ‹ฐ๋ธŒ `addEventListener` ๋ฉ”์„œ๋“œ์˜ ์˜ต์…˜](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#options)์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค:

```vue-html
<!-- ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์บก์ฒ˜ ๋ชจ๋“œ ์‚ฌ์šฉ -->
<!-- ๋‚ด๋ถ€ ์—˜๋ฆฌ๋จผํŠธ์—์„œ ํด๋ฆญ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์—, ์—ฌ๊ธฐ์—์„œ ๋จผ์ € ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. -->
<!-- ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์บก์ฒ˜ ๋ชจ๋“œ ์‚ฌ์šฉ -->
<!-- ๋‚ด๋ถ€ ์—˜๋ฆฌ๋จผํŠธ์—์„œ ํด๋ฆญ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์—, -->
<!-- ์—ฌ๊ธฐ์—์„œ ๋จผ์ € ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. -->
<div @click.capture="doThis">...</div>
<!-- ํด๋ฆญ ์ด๋ฒคํŠธ๋Š” ๋‹จ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. -->
Expand Down
63 changes: 57 additions & 6 deletions src/guide/essentials/watchers.md
Original file line number Diff line number Diff line change
Expand Up @@ -351,14 +351,17 @@ watchEffect(async () => {

๋ฐ˜์‘ํ˜• ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด Vue ์ปดํฌ๋„ŒํŠธ ์—…๋ฐ์ดํŠธ์™€ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“  ๊ฐ์‹œ์ž ์ฝœ๋ฐฑ์ด ๋ชจ๋‘ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ์‹œ์ž ์ฝœ๋ฐฑ์€ Vue ์ปดํฌ๋„ŒํŠธ๊ฐ€ **์—…๋ฐ์ดํŠธ๋˜๊ธฐ ์ „**์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๊ฐ์‹œ์ž ์ฝœ๋ฐฑ ๋‚ด์—์„œ DOM์— ์ ‘๊ทผํ•˜๋ฉด DOM์ด Vue์— ์˜ํ•ด ์—…๋ฐ์ดํŠธ๋˜๊ธฐ ์ „์˜ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
์ปดํฌ๋„ŒํŠธ ์—…๋ฐ์ดํŠธ์™€ ์œ ์‚ฌํ•˜๊ฒŒ, ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“  ๊ฐ์‹œ์ž(watcher) ์ฝœ๋ฐฑ์€ ์ค‘๋ณต ํ˜ธ์ถœ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๊ด„ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ์‹œํ•˜๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด์— ๋™๊ธฐ์ ์œผ๋กœ ์ฒœ ๊ฐœ์˜ ํ•ญ๋ชฉ์„ ํ‘ธ์‹œํ•  ๋•Œ ๊ฐ์‹œ์ž๊ฐ€ ์ฒœ ๋ฒˆ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Vue์— ์˜ํ•ด ์—…๋ฐ์ดํŠธ๋œ ํ›„ ์˜ DOM์„ ๊ฐ์‹œ์ž ์ฝœ๋ฐฑ์—์„œ ์ ‘๊ทผํ•˜๋ ค๋ฉด, `flush: 'post'` ์˜ต์…˜์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
๊ธฐ๋ณธ์ ์œผ๋กœ, ๊ฐ์‹œ์ž์˜ ์ฝœ๋ฐฑ์€ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ **์ดํ›„์—** ํ˜ธ์ถœ๋˜๊ณ , ์†Œ์œ  ์ปดํฌ๋„ŒํŠธ์˜ DOM ์—…๋ฐ์ดํŠธ **์ด์ „์—** ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ์‹œ์ž ์ฝœ๋ฐฑ ๋‚ด์—์„œ ์†Œ์œ  ์ปดํฌ๋„ŒํŠธ์˜ DOM์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ, DOM์ด ์—…๋ฐ์ดํŠธ ์ „ ์ƒํƒœ์— ์žˆ์„ ๊ฒƒ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

### ํ›„์ฒ˜๋ฆฌ ๊ฐ์‹œ์ž {#post-watchers}

Vue๊ฐ€ ์—…๋ฐ์ดํŠธํ•œ ํ›„์— ๊ฐ์‹œ์ž ์ฝœ๋ฐฑ์—์„œ ์†Œ์œ  ์ปดํฌ๋„ŒํŠธ์˜ DOM์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด, `flush: 'post'` ์˜ต์…˜์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

<div class="options-api">

```js
```js{6}
export default {
// ...
watch: {
Expand All @@ -374,7 +377,7 @@ export default {

<div class="composition-api">

```js
```js{2,6}
watch(source, callback, {
flush: 'post'
})
Expand Down Expand Up @@ -452,9 +455,57 @@ count.value++

</div>

### ๋™๊ธฐ์  ๊ฐ์‹œ์ž {#sync-watchers}

Vue์—์„œ ๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฐ์‹œ์ž(watcher)๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ์‹œ์ž๋Š” Vue๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์—…๋ฐ์ดํŠธ ์ด์ „์— ๋™๊ธฐ์ ์œผ๋กœ ๋ฐœ๋™๋ฉ๋‹ˆ๋‹ค:

<div class="options-api">

```js{6}
export default {
// ...
watch: {
key: {
handler() {},
flush: 'sync'
}
}
}
```

</div>

<div class="composition-api">

```js{2,6}
watch(source, callback, {
flush: 'sync'
})
watchEffect(callback, {
flush: 'sync'
})
```

๋™๊ธฐ์  `watchEffect()`๋Š” ๋˜ํ•œ `watchSyncEffect()`๋ผ๋Š” ํŽธ๋ฆฌํ•œ ๋ณ„์นญ๋„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

```js
import { watchSyncEffect } from 'vue'

watchSyncEffect(() => {
/* ๋ฐ˜์‘ํ˜• ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹œ ๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋จ */
})
```

</div>

:::warning ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜์„ธ์š”
๋™๊ธฐ์  ๊ฐ์‹œ์ž๋Š” ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๊ฐ€ ์—†์œผ๋ฉฐ, ๋ฐ˜์‘ํ˜• ๋ณ€๊ฒฝ์ด ๊ฐ์ง€๋  ๋•Œ๋งˆ๋‹ค ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ boolean ๊ฐ’๋“ค์„ ๊ฐ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์ง€๋งŒ, ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด ๋™๊ธฐ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์†Œ์Šค์—๋Š” ์‚ฌ์šฉ์„ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
:::

<div class="options-api">

## `this.$watch()` \*
## `this.$watch()` \* #{#this-watch}

[`$watch()` ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ](/api/component-instance.html#watch)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์‹œ์ž๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Expand Down
35 changes: 35 additions & 0 deletions src/guide/extras/render-function.md
Original file line number Diff line number Diff line change
Expand Up @@ -578,6 +578,41 @@ JSX ๋™๋“ฑ ์ฝ”๋“œ:

์Šฌ๋กฏ์„ ํ•จ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋ฉด ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ง€์—ฐ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์Šฌ๋กฏ์˜ ์ข…์†์„ฑ์€ ๋ถ€๋ชจ๊ฐ€ ์•„๋‹Œ ์ž์‹์— ์˜ํ•ด ์ถ”์ ๋˜๋ฉฐ, ๋” ์ •ํ™•ํ•˜๊ณ  ํšจ์œจ์ ์ธ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

### ๋ฒ”์œ„ ์ง€์ • ์Šฌ๋กฏ {#scoped-slots}

๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฒ”์œ„ ์ง€์ • ์Šฌ๋กฏ์„ ๋ Œ๋”๋งํ•˜๋ ค๋ฉด, ์ž์‹ ์ปดํฌ๋„ŒํŠธ์— ์Šฌ๋กฏ์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ์Šฌ๋กฏ์ด `text`๋ผ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์— ์ฃผ๋ชฉํ•˜์„ธ์š”. ์ด ์Šฌ๋กฏ์€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ˜ธ์ถœ๋˜๋ฉฐ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

```js
// ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ
export default {
setup() {
return () => h(MyComp, null, {
default: ({ text }) => h('p', text)
})
}
}
```

์Šฌ๋กฏ์ด ์†์„ฑ(props)์œผ๋กœ ์ทจ๊ธ‰๋˜์ง€ ์•Š๋„๋ก `null`์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”.

```js
// ์ž์‹ ์ปดํฌ๋„ŒํŠธ
export default {
setup(props, { slots }) {
const text = ref('hi')
return () => h('div', null, slots.default({ text: text.value }))
}
}
```

JSX์™€ ๋™๋“ฑ:

```jsx
<MyComponent>{{
default: ({ text }) => <p>{ text }</p>
}}</MyComponent>
```

### ๋‚ด์žฅ ์ปดํฌ๋„ŒํŠธ {#built-in-components}

`<KeepAlive>`, `<Transition>`, `<TransitionGroup>`, `<Teleport>`, `<Suspense>`๊ณผ ๊ฐ™์€ [๋‚ด์žฅ ์ปดํฌ๋„ŒํŠธ](/api/built-in-components)๋Š” ๋ Œ๋” ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค:
Expand Down
2 changes: 1 addition & 1 deletion src/guide/reusability/composables.md
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ export function useFetch(url) {

์ด ๋ฒ„์ „์˜ `useFetch()`๋Š” ์ด์ œ ์ •์  URL ๋ฌธ์ž์—ด, ref, getter๋ฅผ ๋ฐ›์•„๋“ค์ด๋ฏ€๋กœ ํ›จ์”ฌ ๋” ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค. watch ํšจ๊ณผ๋Š” ์ฆ‰์‹œ ์‹คํ–‰๋˜๋ฉฐ, `toValue(url)` ์ค‘์— ์ ‘๊ทผํ•œ ๋ชจ๋“  ์˜์กด์„ฑ์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ ๋œ ์˜์กด์„ฑ์ด ์—†๋Š” ๊ฒฝ์šฐ (์˜ˆ: url์ด ์ด๋ฏธ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ) ํšจ๊ณผ๋Š” ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค; ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ถ”์ ๋œ ์˜์กด์„ฑ์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ๋‹ค์‹œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ธ๊ณต์ ์ธ ์ง€์—ฐ๊ณผ ๋ฐ๋ชจ ๋ชฉ์ ์œผ๋กœ ๋ฌด์ž‘์œ„ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” [useFetch()์˜ ์—…๋ฐ์ดํŠธ ๋œ ๋ฒ„์ „](https://play.vuejs.org/#eNp9Vdtu40YM/RVWL1ZQr5RF0JfAMXpLgRZtd5Fu90kvY4mKJ5FnhLnYMQz/+5IcSZF3g30IbPNyyHPIYU7ZL31f7CNmt9nK1073ATyG2K8ro3e9dQFO4LBdQm13fQzYwBlaZ3ewoKTFLCh6/ANDvZ38RTmaiidPkZWprfEBNsrj/66DO1hsQ+j9bVk+eWv6TtW4tV2DrgjHXte2wYKKlsE21pcEkNJ1Q5nUUb54v7gajVHwxhbz/Aru1lOhHymn2KsuIsWPGSdoVFBLQOeso57vJgI5gc0CHQZ3JHfCPFUGJjimQH1dGt6T5VyZVZnUJB3pR8Ad8QtIvwD+tqqB3gqXWzasNjEEa2D/rrXurso0aAM/VRn8XHe6fmYLk9ZVtj6dQMP5vCpTiqBXYdXoPWXrlkKFEEUyMEH36w+29z/AvfBEIhVNQIfNLRCWBBc79F49ouDy4CVx6GlqQXQg3Af+nNWn0JLKp2+pD+w8pmZYY8r5nT6gI9pcdtU7ZB7sSyXp95sYa1ZKm8eiKEb/qpykzJbZbMFofy/39aDIcd+2WIclBPtZ5nO5u5XBF0lpo6mDJrYXO5CGnbZAmk17Z2LH+zF60gJ95eK/WQO58kdTz1cIoCwphZ4a+EBsYIM0e4SWqwvlFMV1p91i+GROc/vWPoe23R4hbFEeRwrlLrbOGht9dwRvQYeFh+BU/UwPW3lQE0CDPZqG9uUIm+MFFyE4sifspOzdqPHwfF674eczcBZk5YJuda1VR0U6dQTqVpmGxpJWl+ULAOqgdICgd2jjUJTNBBANa30FB911/DyjM8KTrANP3SZmim38QIbSlsLcQfukS4oVlA1nM5DI8E77gUAYb4AngqkjmRCTFLZ8KAT9YlApkrJoMa0ZFTtDzTJCjsNqfTtJHCL54yxHCEaGXx0sOTKVeUPPykzrPKmX6g1IBg/wkZ4B6ZDnw6IsyflE051vKC3npwHgYnPp3rWQ/6PCtkiDI+8aroubGS0uJsAjeabPb/oyhEvm3I+cp3zxkBZBfi2uXlMHWZZwc30tVhbnTBcgeJpQqx9FaLoBgl5l/J9Ad+g+9KyDrzK6dsNIM9V19vCX2IKLuBzt9Rbr5zfsT/6FbVX2kd+r22OVTb6g3COG5L7/7198oe+Tc2eb2FH0d5wPLFLkHlPYr9E01PYsTrr9Uy4bnYVP/v4loPEjKW5U5JD4KqO79tt3qL+2e1PcSB6reP4CbzCltA==)์ž…๋‹ˆ๋‹ค.
๋‹ค์Œ์€ ์ธ๊ณต์ ์ธ ์ง€์—ฐ๊ณผ ๋ฐ๋ชจ ๋ชฉ์ ์œผ๋กœ ๋ฌด์ž‘์œ„ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” [useFetch()์˜ ์—…๋ฐ์ดํŠธ ๋œ ๋ฒ„์ „](https://play.vuejs.org/#eNp9Vdtu20YQ/ZUpUUA0qpAOjL4YktCbC7Rom8BN8sSHrMihtfZql9iLZEHgv2dml6SpxMiDIWkuZ+acmR2fs1+7rjgEzG6zlaut7Dw49KHbVFruO2M9nMFiu4Ta7LvgsYEeWmv2sKCkxSwoOPwTfb2b/EU5mopHR5GVro12HrbC4UerYA2Lnfeduy3LR2d0p0SNO6MatIU/dbI2DRZUtPSmMa4kgJQuG8qkjvLF28XVaAwRb2wxz69gvZkK/UQ5xUGogBQ/ZpyhEV4sAa01lnpeTwRyApsFWvT2RO6Eea40THBMgfq6NLwlS1/pVZnUJB3ph8c98fNIvwD+MaKBzkQut2xYbYP3RsPhTWvsusokSA0/Vxn8UitZP7GFSX/+8Sz7z1W2OZ9BQt+vypQXS1R+1cgDQciW4iMrimR0wu8270znfoC7SBaJWdAeLTa3QFgxuNijc+IBIy5PPyYOjU19RDEI954/Z/UptKTy6VvqA5XD1AwLTTl/0Aco4s5lV51F5sG+VJJ+v4qxYbmkfiiKYvSvyknPbJnNtoyW+HJpj4Icd22LtV+CN5/ikC4XuNL4HFPaoGsvie3FIqSJp1WIzabl00HxkoyetEVfufhv1kAu3EnX8z0CKEtKofcGzhMb2CItAELL1SPlFMV1pwVj+GROc/vWPoc26oDgdxhfSArlLnbWaBOcOoEzIP3CgbeifqLXLRyICaDBDnVD+3KC7emCSyQ4sifspOx61Hh4Qy/d8BsaOEdkYb1sZS2FoiJKnIC6FbqhsaTVZfk8gDgK6cHLPZowFGUzAQTNWl/BUSrFbzRYHXmSdeAp28RMsI0fyFDaUJg9Spd0SbERZcvZDBRleCPdQMCPh8ARwdRRnBCTjGz5WkT0i0GlSMqixTR6VKyHmmWEHIfV+naSOETyRx8vEYwMv7pa8dJU+hU9Kz2t86ReqjcgaTzCe3oGpEOeD4uyJOcjTXe+obScHwaAi82lo9dC/q/wuyINjrwbuC5uZrS4WAQeyTN9ftOXIVwy537iecoX92kR4q/F1UvqIMsSbq6vo5XF6ekCeEcTauVDFJpuQESvMv53IBXadx3r4KqMrt0w0kwoZY5/R5u3AZejvd5h/fSK/dE9s63K3vN7tQesssnnhX1An9x3//+Hz/R9cu5NExRFf8d5zyIF7jGF/RZ0Q23P4mK3f8XLRmfhg7t79qjdSIobjXLE+Cqju/b7d6i/tHtT3MQ8VrH/Ahstp5A=)์ž…๋‹ˆ๋‹ค.

## ๊ด€๋ก€์™€ ๋ชจ๋ฒ” ์‚ฌ๋ก€ {#conventions-and-best-practices}

Expand Down

1 comment on commit e529cb6

@vercel
Copy link

@vercel vercel bot commented on e529cb6 Jan 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.