Skip to content

Commit e5b8069

Browse files
naokihabajay-es
andauthored
docs : props destructure extras (#2282)
* docs: Improve Japanese translation for props.md file * chore: Update Japanese translation for props.md file * docs: Improve Japanese translation for props.md file * Update src/guide/components/props.md Co-authored-by: Jun Shindo <[email protected]> * Update src/guide/components/props.md Co-authored-by: Jun Shindo <[email protected]> * Update src/guide/components/props.md Co-authored-by: Jun Shindo <[email protected]> * Update src/guide/components/props.md Co-authored-by: Jun Shindo <[email protected]> * Update src/guide/components/props.md Co-authored-by: Jun Shindo <[email protected]> --------- Co-authored-by: Jun Shindo <[email protected]>
1 parent 754e37c commit e5b8069

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/guide/components/props.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ watchEffect(() => {
146146
})
147147
```
148148

149+
IDE 上で分割代入された props と通常の変数をより視覚的に区別したい場合、Vue の VSCode 拡張機能には、分割代入された props にインレイヒントを表示する設定があります。
150+
149151
さらに、JavaScript のネイティブなデフォルト値構文を使用して、props のデフォルト値を宣言できます。これは型ベースの props 宣言を使用する場合に特に便利です:
150152

151153
```ts
@@ -154,6 +156,30 @@ const { foo = 'hello' } = defineProps<{ foo?: string }>()
154156

155157
### 関数への分割代入 props 渡し
156158

159+
分割代入された props を関数に渡す場合、例えば:
160+
161+
```js
162+
const { foo } = defineProps(['foo'])
163+
164+
watch(foo, /* ... */)
165+
```
166+
167+
これは期待通りに動作しません。なぜなら、これは `watch(props.foo, ...)` と同等であり、リアクティブなデータソースではなく値を `watch` に渡しているからです。実際、Vue のコンパイラーはこのような場合を検出し、警告を発します。
168+
169+
通常の props を `watch(() => props.foo, ...)` と監視できるのと同様に、分割代入された props もゲッターでラップすることで監視できます:
170+
171+
```js
172+
watch(() => foo, /* ... */)
173+
```
174+
175+
さらに、リアクティビティを保持しながら分割代入された props を外部関数に渡す必要がある場合、これが推奨されるアプローチです:
176+
177+
```js
178+
useComposable(() => foo)
179+
```
180+
181+
外部関数は、提供された props の変更を追跡する必要がある場合(例えば、computed や watcher のゲッター内で)、ゲッターを呼び出す(もしくは [toValue](/api/reactivity-utilities.html#tovalue) で正規化する)ことができます。
182+
157183
</div>
158184

159185
## props 渡しの詳細 {#prop-passing-details}

0 commit comments

Comments
 (0)