Skip to content

Commit

Permalink
Add info for wrapping refrence types in functions for withDefaults (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
jay-es authored Jul 23, 2024
1 parent c77e4d9 commit 59c8f7c
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/api/sfc-script-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,10 @@ const props = withDefaults(defineProps<Props>(), {

これは、同等なランタイム props の `default` オプションにコンパイルされます。さらに、`withDefaults` ヘルパーは、デフォルト値の型チェックを行います。また、返される `props` の型が、デフォルト値が宣言されているプロパティに対して、省略可能フラグが削除されていることを保証します。

:::info
変更可能な参照型(配列やオブジェクトなど)のデフォルト値は、偶発的な変更や外部からの副作用を避けるために、関数でラップする必要があることに注意してください。こうすることで、各コンポーネントのインスタンスがデフォルト値のコピーを取得することが保証されます。
:::

## defineModel() <sup class="vt-badge" data-text="3.4+" /> {#definemodel}

このマクロは親コンポーネントから `v-model` 経由で使用できる双方向バインディングの props を宣言するために使用できます。使用例は、[コンポーネントの `v-model`](/guide/components/v-model) のガイドでも説明されています。
Expand Down
4 changes: 4 additions & 0 deletions src/guide/typescript/composition-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ const props = withDefaults(defineProps<Props>(), {

これは、ランタイム props の `default` オプションと同等にコンパイルされます。さらに、`withDefaults` ヘルパーはデフォルト値の型チェックを提供し、戻り値の `props` の型からはデフォルト値が宣言されているプロパティのオプションフラグが削除されていることを保証します。

:::info
変更可能な参照型(配列やオブジェクトなど)のデフォルト値は、偶発的な変更や外部からの副作用を避けるために、関数でラップする必要があることに注意してください。こうすることで、各コンポーネントのインスタンスがデフォルト値のコピーを取得することが保証されます。
:::

### `<script setup>` を使用しない場合 {#without-script-setup}

`<script setup>` を使用しない場合、 `defineComponent()` を使用して、props の型推論をする必要があります。`setup()` に渡された変数 props の型は、`props` オプションから推論されます。
Expand Down

0 comments on commit 59c8f7c

Please sign in to comment.