usereducerフック


o減速剤?


還元的なNada Maisは、que - uma - funの上で、エストラーヌe馬を非難します.
(state, action) => newState; // Assinatura de um reducer
<研究ノート>ガーゼの錯綜性について
VAMOSは、Ar - ent Ent - o o com umについて説明します.

リストを行う


const initialTodos = [
  {
    id: 1,
    title: "Tarefa 1",
    complete: false,
  },
  {
    id: 2,
    title: "Tarefa 2",
    complete: false,
  },
];

function Todos() {
  const [todos, setTodos] = useState(initialTodos);

  const handleComplete = (todo) => {
    const { id } = todo;
    const updatedTodos = todos.map((t) => {
      if (t.id === id) {
        return { ...t, complete: !todo.complete };
      }

      return t;
    });

    setTodos(updatedTodos);
  };

  return (
    <>
      {todos.map((todo) => (
        <div key={todo.id}>
          <label>
            <input
              type="checkbox"
              checked={todo.complete}
              onChange={() => handleComplete(todo)}
            />
            {todo.title}
          </label>
        </div>
      ))}
    </>
  );
}

ReactDOM.render(<Todos />, document.getElementById("root"));
エッセCは、Fociona、PorがmエスタモスAribuindo A lのGiAデMudanを形づくってください.
クレッシェンドのためのNecso Estadoは、oを結びつけます、そして、エサlは、gica ficarを食べます.ペパデロパラシュートで降下する人Qualten Manontenは、去勢します!
コモソルucionamos isso?Expenamente o que penso:um還元剤.El Vai Concentrar Toda A l ' s Gica de Mudanはde esteste e em nosso component ens s o o necess und riexextir .vamos l .

救助へのユーザ教育


vamos usar oフックuseReducer . comエレpodemosクリアーtoda nossa lは、gicaデestado em um sをlul eの「disparええ- LA」(派遣)com a a a ' s es(行動).
Dosso Cは、digo alteradoをesseします.
const initialTodos = [
  {
    id: 1,
    title: "Tarefa 1",
    complete: false,
  },
  {
    id: 2,
    title: "Tarefa 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 };
        }

        return todo;
      });
    default:
      return state;
  }
};

function Todos() {
  const [todos, dispatch] = useReducer(reducer, initialTodos);

  const handleComplete = (todo) => {
    const { id } = todo;
    dispatch({ type: "COMPLETE", id });
  };

  return (
    <>
      {todos.map((todo) => (
        <div key={todo.id}>
          <label>
            <input
              type="checkbox"
              checked={todo.complete}
              onChange={() => handleComplete(todo)}
            />
            {todo.title}
          </label>
        </div>
      ))}
    </>
  );
}

ReactDOM.render(<Todos />, document.getElementById("root"));
Pulcoは、aを支持します?<研究報告>😊
  • N社のCriamos O還元剤コモEU Falei acima、楽しい巣state エステド・アリアaction (エグゼクティブ版)
  • Basado Na Aは、o o、vamos mudar o estadoをします.デフォルトのapenas retornamosstate インバラード.

  • 『完全な』、パーコリズス・アルゴンス・パソスにとってのクァンド・オ・ティポ
  • NOSSOの配列は、ENTのAUAMOSマップをパラパラとしています.
  • Dendo Doマップ、比較演算子o o id passado na a a o o o o o ao do itemtodo.id === action.id ).
  • usandoオブジェクトの破壊({ ...todo } ), コピアモスのオスヴァレレスとN . C .complete .

  • com o還元剤モンタロ、代理人o o ouseState PORuseReducer , Passando o PRは、prio還元器e o estestadoを接待します.

    Assim como useState, useReducer retorna um array e podemos usar destructuring para atribuir esse retorno em consts, no nosso caso, todos (a lista de tarefas, ou estado atual) e dispatch (função para mudar o estado).


  • エヌNosso EventoオンチェンジhandleComplete ) アゴラsディスプリズマモスディスカバリー.
  • reparou como o cは、digo ficou mais fを運んでください.

    還元剤還元剤


    vamos agora incrementar nosso reducer permitindo ao usuはrioの挿入物eの排他的である.Isso vai mostrar comoはmais f mre fのmanter tudo em um s s lul .
    Primeiro o cは、digoコンプリート、E EUは、Altera Ses - es Eesロゴem Segiaとして説明します.
    const initialTodos = [
      {
        id: 1,
        title: "Tarefa 1",
        complete: false,
      },
      {
        id: 2,
        title: "Tarefa 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 };
            }
    
            return todo;
          });
        case "INSERT":
          return state.concat({
            id: Math.random(),
            title: action.title,
            complete: false,
          });
        case "DELETE":
          return state.filter((todo) => {
            return todo.id !== action.id;
          });
        default:
          return state;
      }
    };
    
    function Todos() {
      const [todo, setTodo] = useState("");
      const [todos, dispatch] = useReducer(reducer, initialTodos);
    
      const handleComplete = (todo) => {
        const { id } = todo;
        dispatch({ type: "COMPLETE", id });
      };
    
      const handleInsert = (e) => {
        e.preventDefault();
        dispatch({ type: "INSERT", title: todo });
      };
    
      const handleDelete = (e, todo) => {
        e.preventDefault();
        dispatch({ type: "DELETE", id: todo.id });
      };
    
      return (
        <>
          <label>
            Incluir item
            <input value={todo} onChange={(e) => setTodo(e.target.value)} />
            <button onClick={handleInsert}>Inserir</button>
          </label>
          {todos.map((todo) => (
            <div key={todo.id}>
              <label>
                <input
                  type="checkbox"
                  checked={todo.complete}
                  onChange={() => handleComplete(todo)}
                />
                {todo.title}
                <button onClick={(e) => handleDelete(e, todo)}>X</button>
              </label>
            </div>
          ))}
        </>
      );
    }
    
    ReactDOM.render(<Todos />, document.getElementById("root"));
    
    Nenhumグランデ偏析
  • モームエスタドゥパラアルマノーナの一時的アメニティアイテムo novoアイテムque o usuは、Re - Purder incluirです.
  • Criamos Um入力e um bot .
  • e criamosパラシュートで降下する人cdaアイテムumボットは、oを除外します.
  • oグランデ“Essendo”エストアールノnosso減速機、onde agora temos mais duasの外見は、'挿入' e '削除'.
  • いいえ'挿入' usamos楽しいconcat para incluir um novo item no array.
  • '削除' USAMAS楽しいfilter <高橋潤子>todo.id !== action.id )
  • 結論


    クワッドノッソエストラドou l ' gicaパラシュートで降下するuseReducer Pia Manter A l Giy gica num .ニコローカル.
    ルポ・メッカラーuseReducer コムuseState OUTROsフックのcomo fizemos no nossoの例題useContext ( Basicamente para Compartihar Estados , Componentes , Mas Isoso abordaremos em outro artigo )について
    エスペコqueエッセアーガゴテンハアダドゥードは、エンターラーmelhor o queuseReducer .
    NOS VemosなしPRは、Ximo artigoをします.🤓