TECH I.S.

React useReducer


useReducerフックはuseStateフックに似ています。

カスタム状態ロジックを可能にします。

複雑なロジックに依存する複数の状態を追跡していることに気付いた場合は、useReducer役に立つかもしれません。


構文

useReducerフックは2つの引数を受け入れます。

useReducer(<reducer>, <initialState>)

関数reducerにはカスタム状態ロジックが含まれており、initialState単純な値でも構いませんが、通常はオブジェクトが含まれます。

フックuseReducerは電流statedispatchメソッドを返します。

以下はuseReducerカウンターアプリの例です。

例:

import { useReducer } from "react"; import ReactDOM from "react-dom/client"; const initialTodos = [   {     id: 1,     title: "Todo 1",     complete: false,   },   {     id: 2,     title: "Todo 2",     complete: false,   }, ]; const reducer = (state, action) => {   switch (action.type) {     case "COMPLETE":       return state.map((todo) => {         if (todo.id === action.id) {           return { ...todo, complete: !todo.complete };         } else {           return todo;         }       });     default:       return state;   } }; function Todos() {   const [todos, dispatch] = useReducer(reducer, initialTodos);   const handleComplete = (todo) => {     dispatch({ type: "COMPLETE", id: todo.id });   };   return (     <>       {todos.map((todo) => (         <div key={todo.id}>           <label>             <input               type="checkbox"               checked={todo.complete}               onChange={() => handleComplete(todo)}             />             {todo.title}           </label>         </div>       ))}     </>   ); } const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<Todos />);

実行例(開発準備中) »


これは、todoの完了ステータスを追跡するための単なるロジックです。

todoを追加、削除、および完了するためのすべてのロジックは、単一のuseReducerアクションを追加してフックします。



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細