44
55## 算出プロパティ
66
7- 開発中に、他の状態に依存した状態が必要となることがあります。Vue では、これをコンポーネントの[ 算出プロパティ] ( computed.html#computed-properties ) として処理します。算出プロパティの作成には、getter 関数を受け取り、関数の返り値に対して、イミュータブルでリアクティブな [ ref] ( ./reactivity-fundamentals.html#独立したリアクティブな値を-参照 -として作成する ) オブジェクトを返却する ` computed ` メソッドを利用します。 。
7+ 開発中に、他の状態に依存した状態が必要となることがあります。Vue では、これをコンポーネントの [ 算出プロパティ] ( computed.html#算出プロパティ ) として処理します。算出プロパティの作成には、getter 関数を受け取り、関数の返り値に対して、イミュータブルでリアクティブな [ ref] ( ./reactivity-fundamentals.html#独立したリアクティブな値を-ref -として作成する ) オブジェクトを返却する ` computed ` メソッドを利用します。
88
99``` js
1010const count = ref (1 )
@@ -48,7 +48,7 @@ setTimeout(() => {
4848
4949### 監視の停止
5050
51- ` watchEffect ` をコンポーネントの [ setup()] ( composition-api-setup.html ) 関数または[ ライフサイクルフック] ( composition-api-lifecycle-hooks.html ) の中で呼び出すと、ウォッチャはコンポーネントのライフサイクルにリンクされ、コンポーネントのアンマウント時に自動的に監視が停止します。
51+ ` watchEffect ` をコンポーネントの [ setup()] ( composition-api-setup.html ) 関数または [ ライフサイクルフック] ( composition-api-lifecycle-hooks.html ) の中で呼び出すと、ウォッチャはコンポーネントのライフサイクルにリンクされ、コンポーネントのアンマウント時に自動的に監視が停止します。
5252
5353その他のケースのため、明示的にウォッチャによる監視を停止するための stop ハンドルが返されます:
5454
@@ -63,10 +63,10 @@ stop()
6363
6464### 副作用の無効化
6565
66- ウォッチされている関数は、それが無効化された時( つまりは、該当の作用が完了する前に状態が変化した時) にクリーンアップする必要のある非同期の関数を実行することがあります。 watchEffect による関数は、コールバックを無効化するための ` onInvalidate ` 関数を受け取ることができます。この関数は以下の場合に呼び出されます:
66+ ウォッチされている関数は、それが無効化された時( つまりは、該当の作用が完了する前に状態が変化した時) にクリーンアップする必要のある非同期の関数を実行することがあります。 watchEffect による関数は、コールバックを無効化するための ` onInvalidate ` 関数を受け取ることができます。この関数は以下の場合に呼び出されます:
6767
6868- 該当の作用が再度実行された場合
69- - ウォッチャが停止した場合 ( 例: ` setup() ` またはライフサイクルフックの中で ` watchEffect ` が使用されているコンポーネントがアンマウントされた時)
69+ - ウォッチャが停止した場合( 例: ` setup() ` またはライフサイクルフックの中で ` watchEffect ` が使用されているコンポーネントがアンマウントされた時)
7070
7171``` js
7272watchEffect (onInvalidate => {
@@ -79,7 +79,7 @@ watchEffect(onInvalidate => {
7979})
8080```
8181
82- 無効化するコールバックを直接返すのではなく、 ` onInvalidate ` 関数のコールバックを経由して登録しているのは、非同期のエラー処理では、返り値が非常に重要であるためです 。データ取得を行う時、作用となる関数が非同期であることは非常に一般的なことです:
82+ 無効化するコールバックを直接返すのではなく、 ` onInvalidate ` 関数のコールバックを経由して登録しているのは、非同期のエラー処理では、返り値が非常に重要だからです 。データ取得を行う時、作用となる関数が非同期であることは非常に一般的なことです:
8383
8484``` js
8585const data = ref (null )
@@ -93,7 +93,7 @@ watchEffect(async (onInvalidate) => {
9393
9494### 作用フラッシュのタイミング
9595
96- Vue のリアクティブシステムは、無効になった変更をバッファリングし、非同期に処理することによって、おなじ "tick" の中での複数の状態の変化に対して、不要な重複の呼び出しを避けることができています。内部的には、コンポーネントの ` update ` 関数も、監視されている作用の一つです 。ユーザーによる作用がキューに入っている場合、デフォルトではすべてのコンポーネントの更新の ** 前に** 呼び出されます:
96+ Vue のリアクティブシステムは、無効になった変更をバッファリングし、非同期に処理することによって、おなじ "tick" の中での複数の状態の変化に対して、不要な重複の呼び出しを避けることができています。内部的には、コンポーネントの ` update ` 関数も、監視されている作用の 1 つです 。ユーザーによる作用がキューに入っている場合、デフォルトではすべてのコンポーネントの更新の ** 前に** 呼び出されます:
9797
9898``` html
9999
@@ -121,9 +121,9 @@ Vue のリアクティブシステムは、無効になった変更をバッフ
121121この例では:
122122
123123- count は最初の実行時に同期的に記録されます。
124- - ` count ` が変化した時、コンポーネントの** 変更前** にコールバック関数が実行されます。
124+ - ` count ` が変化した時、コンポーネントの ** 変更前** にコールバック関数が実行されます。
125125
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' ` )と一緒に渡すことができます :
127127
128128``` js
129129// コンポーネントが更新された後に発火、更新された DOM にアクセスできる
@@ -139,7 +139,7 @@ watchEffect(
139139)
140140```
141141
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' ` も指定できます。これは作用をいつも同期的に発火することを強制します。しかし、これは非効率的であって、ほとんど必要ないでしょう。
143143
144144### Watcher のデバッグ
145145
@@ -167,7 +167,7 @@ watchEffect(
167167
168168## ` watch `
169169
170- ` watch ` API は、コンポーネントの[ watch] ( computed.html#watchers ) プロパティと完全に同じものです。` watch ` は特定のデータソースを監視し、別のコールバック関数内で副作用を適用する必要があります。また、デフォルトでは lazy となっています( つまり、監視しているデータソースが変更された場合に限り、コールバック関数が実行されます) 。
170+ ` watch ` API は、コンポーネントの [ watch] ( computed.html#ウォッチャ ) プロパティと完全に同じものです。` watch ` は特定のデータソースを監視し、別のコールバック関数内で副作用を適用する必要があります。また、デフォルトでは lazy となっています( つまり、監視しているデータソースが変更された場合に限り、コールバック関数が実行されます) 。
171171
172172- [ watchEffect] ( #watcheffect ) と比較して、 ` watch ` は以下を可能とします:
173173
@@ -212,9 +212,9 @@ firstName.value = "John"; // logs: ["John",""] ["", ""]
212212lastName .value = " Smith" ; // logs: ["John", "Smith"] ["John", ""]
213213```
214214
215- ### Watching Reactive Objects
215+ ### リアクティブなオブジェクトの監視
216216
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+ ウォッチャを使って、リアクティブな配列やオブジェクトの値を比較するには、値だけのコピーを作っておく必要があります。
218218
219219``` js
220220const numbers = reactive ([1 , 2 , 3 , 4 ])
@@ -228,12 +228,12 @@ watch(
228228numbers .push (5 ) // logs: [1,2,3,4,5] [1,2,3,4]
229229```
230230
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 にする必要があります :
232232
233233``` js
234- const state = reactive ({
235- id: 1 ,
236- attributes: {
234+ const state = reactive ({
235+ id: 1 ,
236+ attributes: {
237237 name: " " ,
238238 },
239239});
@@ -264,7 +264,7 @@ watch(
264264state .attributes .name = " Alex" ; // Logs: "deep " "Alex" "Alex"
265265```
266266
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 ) のようなユーティリティで実現できます。
268268
269269``` js
270270import _ from ' lodash' ;
@@ -280,7 +280,7 @@ watch(
280280 () => _ .cloneDeep (state),
281281 (state , prevState ) => {
282282 console .log (
283- state .attributes .name ,
283+ state .attributes .name ,
284284 prevState .attributes .name
285285 );
286286 }
@@ -291,4 +291,4 @@ state.attributes.name = "Alex"; // Logs: "Alex" ""
291291
292292### ` watchEffect ` との振る舞いの共有
293293
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