4
4
5
5
## 算出プロパティ
6
6
7
- 開発中に、他の状態に依存した状態が必要となることがあります。Vue では、これをコンポーネントの[ 算出プロパティ] ( computed.html#computed-properties ) として処理します。算出プロパティの作成には、getter 関数を受け取り、関数の返り値に対して、イミュータブルでリアクティブな [ ref] ( ./reactivity-fundamentals.html#独立したリアクティブな値を-参照 -として作成する ) オブジェクトを返却する ` computed ` メソッドを利用します。 。
7
+ 開発中に、他の状態に依存した状態が必要となることがあります。Vue では、これをコンポーネントの [ 算出プロパティ] ( computed.html#算出プロパティ ) として処理します。算出プロパティの作成には、getter 関数を受け取り、関数の返り値に対して、イミュータブルでリアクティブな [ ref] ( ./reactivity-fundamentals.html#独立したリアクティブな値を-ref -として作成する ) オブジェクトを返却する ` computed ` メソッドを利用します。
8
8
9
9
``` js
10
10
const count = ref (1 )
@@ -48,7 +48,7 @@ setTimeout(() => {
48
48
49
49
### 監視の停止
50
50
51
- ` watchEffect ` をコンポーネントの [ setup()] ( composition-api-setup.html ) 関数または[ ライフサイクルフック] ( composition-api-lifecycle-hooks.html ) の中で呼び出すと、ウォッチャはコンポーネントのライフサイクルにリンクされ、コンポーネントのアンマウント時に自動的に監視が停止します。
51
+ ` watchEffect ` をコンポーネントの [ setup()] ( composition-api-setup.html ) 関数または [ ライフサイクルフック] ( composition-api-lifecycle-hooks.html ) の中で呼び出すと、ウォッチャはコンポーネントのライフサイクルにリンクされ、コンポーネントのアンマウント時に自動的に監視が停止します。
52
52
53
53
その他のケースのため、明示的にウォッチャによる監視を停止するための stop ハンドルが返されます:
54
54
@@ -63,10 +63,10 @@ stop()
63
63
64
64
### 副作用の無効化
65
65
66
- ウォッチされている関数は、それが無効化された時( つまりは、該当の作用が完了する前に状態が変化した時) にクリーンアップする必要のある非同期の関数を実行することがあります。 watchEffect による関数は、コールバックを無効化するための ` onInvalidate ` 関数を受け取ることができます。この関数は以下の場合に呼び出されます:
66
+ ウォッチされている関数は、それが無効化された時( つまりは、該当の作用が完了する前に状態が変化した時) にクリーンアップする必要のある非同期の関数を実行することがあります。 watchEffect による関数は、コールバックを無効化するための ` onInvalidate ` 関数を受け取ることができます。この関数は以下の場合に呼び出されます:
67
67
68
68
- 該当の作用が再度実行された場合
69
- - ウォッチャが停止した場合 ( 例: ` setup() ` またはライフサイクルフックの中で ` watchEffect ` が使用されているコンポーネントがアンマウントされた時)
69
+ - ウォッチャが停止した場合( 例: ` setup() ` またはライフサイクルフックの中で ` watchEffect ` が使用されているコンポーネントがアンマウントされた時)
70
70
71
71
``` js
72
72
watchEffect (onInvalidate => {
@@ -79,7 +79,7 @@ watchEffect(onInvalidate => {
79
79
})
80
80
```
81
81
82
- 無効化するコールバックを直接返すのではなく、 ` onInvalidate ` 関数のコールバックを経由して登録しているのは、非同期のエラー処理では、返り値が非常に重要であるためです 。データ取得を行う時、作用となる関数が非同期であることは非常に一般的なことです:
82
+ 無効化するコールバックを直接返すのではなく、 ` onInvalidate ` 関数のコールバックを経由して登録しているのは、非同期のエラー処理では、返り値が非常に重要だからです 。データ取得を行う時、作用となる関数が非同期であることは非常に一般的なことです:
83
83
84
84
``` js
85
85
const data = ref (null )
@@ -93,7 +93,7 @@ watchEffect(async (onInvalidate) => {
93
93
94
94
### 作用フラッシュのタイミング
95
95
96
- Vue のリアクティブシステムは、無効になった変更をバッファリングし、非同期に処理することによって、おなじ "tick" の中での複数の状態の変化に対して、不要な重複の呼び出しを避けることができています。内部的には、コンポーネントの ` update ` 関数も、監視されている作用の一つです 。ユーザーによる作用がキューに入っている場合、デフォルトではすべてのコンポーネントの更新の ** 前に** 呼び出されます:
96
+ Vue のリアクティブシステムは、無効になった変更をバッファリングし、非同期に処理することによって、おなじ "tick" の中での複数の状態の変化に対して、不要な重複の呼び出しを避けることができています。内部的には、コンポーネントの ` update ` 関数も、監視されている作用の 1 つです 。ユーザーによる作用がキューに入っている場合、デフォルトではすべてのコンポーネントの更新の ** 前に** 呼び出されます:
97
97
98
98
``` html
99
99
@@ -121,9 +121,9 @@ Vue のリアクティブシステムは、無効になった変更をバッフ
121
121
この例では:
122
122
123
123
- count は最初の実行時に同期的に記録されます。
124
- - ` count ` が変化した時、コンポーネントの** 変更前** にコールバック関数が実行されます。
124
+ - ` count ` が変化した時、コンポーネントの ** 変更前** にコールバック関数が実行されます。
125
125
126
- In cases where a watcher effect needs to be re-run ** after ** component updates (i.e. when working with [ Template Refs ] ( ./composition-api-template-refs.md#watching-template-refs ) ), we can pass an additional ` options ` object with the ` flush ` option (default is ` 'pre' ` ) :
126
+ コンポーネントの ** 更新後に ** ウォッチャの作用を再実行する必要がある場合(例: [ テンプレート参照 ] ( ./composition-api-template-refs.md#テンプレート参照の監視 ) を使っている場合など)、追加の ` options ` オブジェクトを ` flush ` オプション(デフォルトは ` 'pre' ` )と一緒に渡すことができます :
127
127
128
128
``` js
129
129
// コンポーネントが更新された後に発火、更新された DOM にアクセスできる
@@ -139,7 +139,7 @@ watchEffect(
139
139
)
140
140
```
141
141
142
- The ` flush ` option also accepts ` 'sync' ` , which forces the effect to always trigger synchronously. This is however inefficient and should be rarely needed.
142
+ ` flush ` オプションは ` 'sync' ` も指定できます。これは作用をいつも同期的に発火することを強制します。しかし、これは非効率的であって、ほとんど必要ないでしょう。
143
143
144
144
### Watcher のデバッグ
145
145
@@ -167,7 +167,7 @@ watchEffect(
167
167
168
168
## ` watch `
169
169
170
- ` watch ` API は、コンポーネントの[ watch] ( computed.html#watchers ) プロパティと完全に同じものです。` watch ` は特定のデータソースを監視し、別のコールバック関数内で副作用を適用する必要があります。また、デフォルトでは lazy となっています( つまり、監視しているデータソースが変更された場合に限り、コールバック関数が実行されます) 。
170
+ ` watch ` API は、コンポーネントの [ watch] ( computed.html#ウォッチャ ) プロパティと完全に同じものです。` watch ` は特定のデータソースを監視し、別のコールバック関数内で副作用を適用する必要があります。また、デフォルトでは lazy となっています( つまり、監視しているデータソースが変更された場合に限り、コールバック関数が実行されます) 。
171
171
172
172
- [ watchEffect] ( #watcheffect ) と比較して、 ` watch ` は以下を可能とします:
173
173
@@ -212,9 +212,9 @@ firstName.value = "John"; // logs: ["John",""] ["", ""]
212
212
lastName .value = " Smith" ; // logs: ["John", "Smith"] ["John", ""]
213
213
```
214
214
215
- ### Watching Reactive Objects
215
+ ### リアクティブなオブジェクトの監視
216
216
217
- Using a watcher to compare values of an array or object that are reactive requires that it has a copy made of just the values.
217
+ ウォッチャを使って、リアクティブな配列やオブジェクトの値を比較するには、値だけのコピーを作っておく必要があります。
218
218
219
219
``` js
220
220
const numbers = reactive ([1 , 2 , 3 , 4 ])
@@ -228,12 +228,12 @@ watch(
228
228
numbers .push (5 ) // logs: [1,2,3,4,5] [1,2,3,4]
229
229
```
230
230
231
- Attempting to check for changes of properties in a deeply nested object or array will still require the ` deep ` option to be true:
231
+ 深くネストしたオブジェクトや配列のプロパティの変更をチェックするには、やはり ` deep ` オプションを true にする必要があります :
232
232
233
233
``` js
234
- const state = reactive ({
235
- id: 1 ,
236
- attributes: {
234
+ const state = reactive ({
235
+ id: 1 ,
236
+ attributes: {
237
237
name: " " ,
238
238
},
239
239
});
@@ -264,7 +264,7 @@ watch(
264
264
state .attributes .name = " Alex" ; // Logs: "deep " "Alex" "Alex"
265
265
```
266
266
267
- However, watching a reactive object or array will always return a reference to the current value of that object for both the current and previous value of the state. To fully watch deeply nested objects and arrays, a deep copy of values may be required. This can be achieved with a utility such as [ lodash.cloneDeep] ( https://lodash.com/docs/4.17.15#cloneDeep )
267
+ しかし、リアクティブなオブジェクトや配列を監視すると、そのオブジェクトの状態の現在値と前回値の両方について参照が常に返されます。深くネストされたオブジェクトや配列を完全に監視するためには、値のディープコピーが必要な場合があります。これは [ lodash.cloneDeep] ( https://lodash.com/docs/4.17.15#cloneDeep ) のようなユーティリティで実現できます。
268
268
269
269
``` js
270
270
import _ from ' lodash' ;
@@ -280,7 +280,7 @@ watch(
280
280
() => _ .cloneDeep (state),
281
281
(state , prevState ) => {
282
282
console .log (
283
- state .attributes .name ,
283
+ state .attributes .name ,
284
284
prevState .attributes .name
285
285
);
286
286
}
@@ -291,4 +291,4 @@ state.attributes.name = "Alex"; // Logs: "Alex" ""
291
291
292
292
### ` watchEffect ` との振る舞いの共有
293
293
294
- ` watch ` は[ 明示的な停止] ( #stopping-the-watcher ) 、[ 副作用の無効化] ( #side-effect-invalidation ) ( 代わりに第三引数に ` onInvalidate ` を渡すことになります) 、[ 作用フラッシュのタイミング] ( #effect-flush-timing ) ならびに[ デバッグ手法] ( #watcher-debugging ) についての挙動を[ ` watchEffect ` ] ( #watcheffect ) と共有しています。
294
+ ` watch ` は [ 明示的な停止] ( #監視の停止 ) 、[ 副作用の無効化] ( #副作用の無効化 ) ( 代わりに第三引数に ` onInvalidate ` を渡すことになります) 、[ 作用フラッシュのタイミング] ( #作用フラッシュのタイミング ) ならびに [ デバッグ手法] ( #watcher-のデバッグ ) についての挙動を [ ` watchEffect ` ] ( #watcheffect ) と共有しています。
0 commit comments