Skip to content

Commit a093ca6

Browse files
authored
Japanese Translate Optimistic Updates Section (#281)
* Translate Optimistic Updates Section Fixes #278 * Update mutation.ja.md * Update meta.ja.json * Update optimistic-ui.js.mdx * Update optimistic-ui.js.mdx
1 parent 8e5c6fa commit a093ca6

File tree

3 files changed

+33
-16
lines changed

3 files changed

+33
-16
lines changed

pages/docs/mutation.ja.md

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ function App () {
3333

3434
*: 同じ [キャッシュプロバイダー](/docs/cache) のスコープ下では、 SWR フックに渡されます。もしキャッシュプロバイダーが無ければ、すべての SWR フックに渡されます。
3535

36-
## ミューテーションと POST リクエスト
36+
## 楽観的な更新
3737

3838
多くの場合、データにローカルミューテーションを適用することは、変更をより速く
3939
感じさせるための良い方法です。データのリモートソースを待つ必要はありません。
@@ -53,32 +53,30 @@ function Profile () {
5353
<h1>My name is {data.name}.</h1>
5454
<button onClick={async () => {
5555
const newName = data.name.toUpperCase()
56+
const user = { ...data, name: newName }
57+
const options = { optimisticData: user, rollbackOnError: true }
5658

5759
// 再検証をせずに直ちにローカルデータを更新します
58-
mutate('/api/user', { ...data, name: newName }, false)
59-
60-
// ソースを更新するために API にリクエストを送信します
61-
await requestUpdateUsername(newName)
62-
60+
// ソースを更新するためにリクエストを送信します
6361
// ローカルデータが最新であることを確かめるために再検証(再取得)を起動します
64-
mutate('/api/user')
62+
mutate('/api/user', updateFn(user), options);
6563
}}>Uppercase my name!</button>
6664
</div>
6765
)
6866
}
6967
```
7068

71-
上記の例でボタンをクリックすると、ローカルでクライアントデータを更新し、
72-
リモートデータを修正するための POST リクエストを送信して、最新のデータを取得します(再検証)。
69+
> **`updateFn`** は、リモートミューテーションを処理するための promise 関数か非同期関数でなければならず、更新されたデータを返す必要があります。
7370
74-
ただし、多くの POST API は更新されたデータを直接返すだけなので、再度再検証する必要はありません。
75-
「ローカルミューテート - リクエスト - 更新」の使用法を示す例を次に示します。
71+
**利用可能なオプション**
7672

77-
```jsx
78-
mutate('/api/user', newUser, false) // 再検証せずに変更するには、`false` を使用します
79-
mutate('/api/user', updateUser(newUser), false) // `updateUser` は、このリクエストの Promise であり、
80-
// 更新されたドキュメントを返します
81-
```
73+
**`optimisticData`**: クライアントキャッシュを直ちに更新するデータで、通常は 楽観的な UI で使用されます。
74+
75+
**`revalidate`**: 非同期更新が解決した後、キャッシュを再検証するかどうか。
76+
77+
**`populateCache`**: リモートミューテーションの結果をキャッシュに書き込むかどうか。
78+
79+
**`rollbackOnError`**: リモートミューテーションでエラーが発生した場合、キャッシュをロールバックするかどうか。
8280

8381
## 現在のデータにもとづいたミューテート
8482

pages/examples/meta.ja.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"basic": "基本的な使用法",
33
"auth": "認証",
4+
"optimistic-ui": "楽観的なUI",
45
"infinite-loading": "無限ローディング",
56
"error-handling": "エラーハンドリング",
67
"ssr": "Next.js SSR"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: 楽観的なUI
3+
full: true
4+
---
5+
6+
<iframe
7+
src="https://codesandbox.io/embed/swr-basic-forked-k5hps?fontsize=14&hidenavigation=1&theme=dark"
8+
style={{
9+
width: '100%',
10+
height: '100%',
11+
border: 0,
12+
overflow: 'hidden',
13+
background: 'rgb(21, 21, 21)'
14+
}}
15+
title="SWR - 楽観的なUI"
16+
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"
17+
sandbox="allow-autoplay allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
18+
/>

0 commit comments

Comments
 (0)