11---
2- source-updated-at : 2025-06-01T01:32:20 .000Z
3- translation-updated-at : 2025-06-02T20:01:14.188Z
4- title : データの更新方法
2+ source-updated-at : 2025-06-03T15:30:49 .000Z
3+ translation-updated-at : 2025-06-06T16:36:21.895Z
4+ title : データ更新方法
55nav_title : データ更新
6- description : Next.jsアプリケーションでデータを更新する方法について学びましょう 。
6+ description : Next.jsアプリケーションでデータを更新する方法について学びます 。
77related :
88 title : APIリファレンス
9- description : このページで紹介されている機能について詳しく知るには、APIリファレンスをお読みください 。
9+ description : このページで言及されている機能について詳しく知るにはAPIリファレンスを参照してください 。
1010 links :
1111 - app/api-reference/functions/revalidatePath
1212 - app/api-reference/functions/revalidateTag
@@ -15,36 +15,36 @@ related:
1515
1616Next.jsではReactの[ サーバー関数 (Server Functions)] ( https://react.dev/reference/rsc/server-functions ) を使用してデータを更新できます。このページでは[ サーバー関数の作成] ( #creating-server-functions ) と[ 呼び出し] ( #invoking-server-functions ) 方法について説明します。
1717
18- ## サーバー関数
18+ ## サーバー関数 (Server Functions)
1919
20- サーバー関数とは、サーバー上で実行される非同期関数です。サーバー関数はクライアントからネットワークリクエスト経由で呼び出されるため、本質的に非同期です 。` action ` の一部として呼び出される場合、** サーバーアクション (Server Actions)** とも呼ばれます。
20+ サーバー関数はサーバー上で実行される非同期関数です。クライアントからネットワークリクエスト経由で呼び出されるため、サーバー関数は本質的に非同期です 。` action ` の一部として呼び出される場合、** サーバーアクション (Server Actions)** とも呼ばれます。
2121
22- 慣例として、` action ` は` startTransition ` に渡される非同期関数です。サーバー関数は以下の場合に自動的に` startTransition ` でラップされます:
22+ 慣例として、` action ` は` startTransition ` に渡される非同期関数です。サーバー関数は以下の場合に自動的に` startTransition ` でラップされます:
2323
2424- ` <form> ` の` action ` プロパティに渡された場合
2525- ` <button> ` の` formAction ` プロパティに渡された場合
2626- ` useActionState ` に渡された場合
2727
2828## サーバー関数の作成
2929
30- サーバー関数は[ ` use server ` ] ( https://react.dev/reference/rsc/use-server ) ディレクティブを使用して定義できます。このディレクティブを ** 非同期** 関数の先頭に配置して関数をサーバー関数としてマークするか、別ファイルの先頭に配置してそのファイルのすべてのエクスポートをマークできます 。
30+ サーバー関数は[ ` use server ` ] ( https://react.dev/reference/rsc/use-server ) ディレクティブを使用して定義できます。ディレクティブを ** 非同期** 関数の先頭に配置して関数をサーバー関数としてマークするか、ファイルの先頭に配置してそのファイルのすべてのエクスポートをマークできます 。
3131
3232``` ts filename="app/lib/actions.ts" switcher
3333export async function createPost(formData : FormData ) {
3434 ' use server'
3535 const title = formData .get (' title' )
3636 const content = formData .get (' content' )
3737
38- // データを更新
39- // キャッシュを再検証
38+ // データ更新
39+ // キャッシュ再検証
4040}
4141
4242export async function deletePost(formData : FormData ) {
4343 ' use server'
4444 const id = formData .get (' id' )
4545
46- // データを更新
47- // キャッシュを再検証
46+ // データ更新
47+ // キャッシュ再検証
4848}
4949```
5050
@@ -54,22 +54,22 @@ export async function createPost(formData) {
5454 const title = formData .get (' title' )
5555 const content = formData .get (' content' )
5656
57- // データを更新
58- // キャッシュを再検証
57+ // データ更新
58+ // キャッシュ再検証
5959}
6060
6161export async function deletePost (formData ) {
6262 ' use server'
6363 const id = formData .get (' id' )
6464
65- // データを更新
66- // キャッシュを再検証
65+ // データ更新
66+ // キャッシュ再検証
6767}
6868```
6969
70- ### サーバーコンポーネント
70+ ### サーバーコンポーネント (Server Components)
7171
72- サーバー関数はサーバーコンポーネント内にインラインで定義できます。 関数本体の先頭に` "use server" ` ディレクティブを追加します:
72+ サーバーコンポーネント内では、 関数本体の先頭に` "use server" ` ディレクティブを追加することでサーバー関数をインラインで定義できます:
7373
7474``` tsx filename="app/page.tsx" switcher
7575export default function Page() {
@@ -95,9 +95,9 @@ export default function Page() {
9595}
9696```
9797
98- ### クライアントコンポーネント
98+ ### クライアントコンポーネント (Client Components)
9999
100- クライアントコンポーネント内でサーバー関数を定義することはできません 。ただし、` "use server" ` ディレクティブがファイル先頭にあるファイルからインポートすることで、クライアントコンポーネント内で呼び出すことができます:
100+ クライアントコンポーネントでサーバー関数を定義することはできません 。ただし、` "use server" ` ディレクティブが先頭にあるファイルからインポートすることで、クライアントコンポーネントで呼び出すことができます:
101101
102102``` ts filename="app/actions.ts" switcher
103103' use server'
@@ -133,16 +133,16 @@ export function Button() {
133133
134134## サーバー関数の呼び出し
135135
136- サーバー関数を呼び出す主な方法は2つあります:
136+ サーバー関数を呼び出す主な方法は2つあります:
137137
138- 1 . サーバー/クライアントコンポーネント内の [ フォーム] ( #forms )
139- 2 . クライアントコンポーネント内の [ イベントハンドラー ] ( #event-handlers )
138+ 1 . サーバー/クライアントコンポーネントでの [ フォーム] ( #forms ) 使用
139+ 2 . クライアントコンポーネントでの [ イベントハンドラ ] ( #event-handlers ) 使用
140140
141141### フォーム
142142
143143ReactはHTMLの[ ` <form> ` ] ( https://react.dev/reference/react-dom/components/form ) 要素を拡張し、HTMLの` action ` プロパティでサーバー関数を呼び出せるようにしています。
144144
145- フォーム内で呼び出された場合 、関数は自動的に[ ` FormData ` ] ( https://developer.mozilla.org/docs/Web/API/FormData/FormData ) オブジェクトを受け取ります。ネイティブの[ ` FormData ` メソッド] ( https://developer.mozilla.org/en-US/docs/Web/API/FormData#instance_methods ) を使用してデータを抽出できます:
145+ フォームで呼び出された場合 、関数は自動的に[ ` FormData ` ] ( https://developer.mozilla.org/docs/Web/API/FormData/FormData ) オブジェクトを受け取ります。ネイティブの[ ` FormData ` メソッド] ( https://developer.mozilla.org/en-US/docs/Web/API/FormData#instance_methods ) を使用してデータを抽出できます:
146146
147147``` tsx filename="app/ui/form.tsx" switcher
148148import { createPost } from ' @/app/actions'
@@ -179,8 +179,8 @@ export async function createPost(formData: FormData) {
179179 const title = formData .get (' title' )
180180 const content = formData .get (' content' )
181181
182- // データを更新
183- // キャッシュを再検証
182+ // データ更新
183+ // キャッシュ再検証
184184}
185185```
186186
@@ -191,16 +191,16 @@ export async function createPost(formData) {
191191 const title = formData .get (' title' )
192192 const content = formData .get (' content' )
193193
194- // データを更新
195- // キャッシュを再検証
194+ // データ更新
195+ // キャッシュ再検証
196196}
197197```
198198
199- > ** 豆知識 ** : ` action ` プロパティに渡された場合、サーバー関数は_サーバーアクション_とも呼ばれます 。
199+ > ** 補足: ** ` action ` プロパティに渡された場合、サーバー関数は_サーバーアクション (Server Actions) _ とも呼ばれます 。
200200
201- ### イベントハンドラー
201+ ### イベントハンドラ
202202
203- ` onClick ` などのイベントハンドラーを使用して、クライアントコンポーネント内でサーバー関数を呼び出すことができます 。
203+ クライアントコンポーネントでは ` onClick ` などのイベントハンドラを使用してサーバー関数を呼び出せます 。
204204
205205``` tsx filename="app/like-button.tsx" switcher
206206' use client'
@@ -252,25 +252,25 @@ export default function LikeButton({ initialLikes }) {
252252}
253253```
254254
255- ## 例
255+ ## 使用例
256256
257- ### 保留状態の表示
257+ ### 処理中状態の表示
258258
259- サーバー関数の実行中 、Reactの[ ` useActionState ` ] ( https://react.dev/reference/react/useActionState ) フックを使用してローディングインジケーターを表示できます 。このフックは` pending ` ブール値を返します:
259+ サーバー関数の実行中は 、Reactの[ ` useActionState ` ] ( https://react.dev/reference/react/useActionState ) フックを使用してローディングインジケータを表示できます 。このフックは` pending ` ブール値を返します:
260260
261261``` tsx filename="app/ui/button.tsx" switcher
262262' use client'
263263
264- import { useActionState } from ' react'
264+ import { useActionState , startTransition } from ' react'
265265import { createPost } from ' @/app/actions'
266266import { LoadingSpinner } from ' @/app/ui/loading-spinner'
267267
268268export function Button() {
269269 const [state, action, pending] = useActionState (createPost , false )
270270
271271 return (
272- <button onClick = { async () => action ( )} >
273- { pending ? <LoadingSpinner /> : ' 投稿を作成 ' }
272+ <button onClick = { () => startTransition ( action )} >
273+ { pending ? <LoadingSpinner /> : ' 投稿作成 ' }
274274 </button >
275275 )
276276}
@@ -279,31 +279,31 @@ export function Button() {
279279``` jsx filename="app/ui/button.js" switcher
280280' use client'
281281
282- import { useActionState } from ' react'
282+ import { useActionState , startTransition } from ' react'
283283import { createPost } from ' @/app/actions'
284284import { LoadingSpinner } from ' @/app/ui/loading-spinner'
285285
286286export function Button () {
287287 const [state , action , pending ] = useActionState (createPost, false )
288288
289289 return (
290- < button onClick= {async () => action ( )}>
291- {pending ? < LoadingSpinner / > : ' 投稿を作成 ' }
290+ < button onClick= {() => startTransition (action )}>
291+ {pending ? < LoadingSpinner / > : ' 投稿作成 ' }
292292 < / button>
293293 )
294294}
295295```
296296
297297### キャッシュの再検証
298298
299- 更新を実行した後、サーバー関数内で[ ` revalidatePath ` ] ( /docs/app/api-reference/functions/revalidatePath ) または[ ` revalidateTag ` ] ( /docs/app/api-reference/functions/revalidateTag ) を呼び出すことでNext.jsのキャッシュを再検証し、更新されたデータを表示できます:
299+ 更新を実行した後、サーバー関数内で[ ` revalidatePath ` ] ( /docs/app/api-reference/functions/revalidatePath ) または[ ` revalidateTag ` ] ( /docs/app/api-reference/functions/revalidateTag ) を呼び出すことでNext.jsのキャッシュを再検証し、更新されたデータを表示できます:
300300
301301``` ts filename="app/lib/actions.ts" switcher
302302import { revalidatePath } from ' next/cache'
303303
304304export async function createPost(formData : FormData ) {
305305 ' use server'
306- // データを更新
306+ // データ更新
307307 // ...
308308
309309 revalidatePath (' /posts' )
@@ -315,23 +315,23 @@ import { revalidatePath } from 'next/cache'
315315
316316export async function createPost (formData ) {
317317 ' use server'
318- // データを更新
318+ // データ更新
319319 // ...
320320 revalidatePath (' /posts' )
321321}
322322```
323323
324324### リダイレクト
325325
326- 更新後にユーザーを別のページにリダイレクトしたい場合があります。サーバー関数内で[ ` redirect ` ] ( /docs/app/api-reference/functions/redirect ) を呼び出すことでこれを行えます:
326+ 更新後にユーザーを別のページにリダイレクトしたい場合があります。サーバー関数内で[ ` redirect ` ] ( /docs/app/api-reference/functions/redirect ) を呼び出すことで実現できます:
327327
328328``` ts filename="app/lib/actions.ts" switcher
329329' use server'
330330
331331import { redirect } from ' next/navigation'
332332
333333export async function createPost(formData : FormData ) {
334- // データを更新
334+ // データ更新
335335 // ...
336336
337337 redirect (' /posts' )
@@ -344,7 +344,7 @@ export async function createPost(formData: FormData) {
344344import { redirect } from ' next/navigation'
345345
346346export async function createPost (formData ) {
347- // データを更新
347+ // データ更新
348348 // ...
349349
350350 redirect (' /posts' )
0 commit comments