React Tutorials
React ES6
React Hooks
useReducer
HookThe useReducer
Hook is similar to the useState
Hook.
Allows a sense of custom status.
If you find yourself tracing many pieces of state that rely on complex intellectuals, the useReducer
may be helpful.
The use of Reducer Hook accepts two arguments.
useReducer (
reducer
function contains your customization thinking and startup initialState
may be simple but will usually contain something.
useReducer
Hook restores current state
and dispatch
method.
Here is an example of a useReducer
for a counter app:
import { useReducer } from "react";
import ReactDOM from "react-dom";
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>
))}
</>
);
}
ReactDOM.render(<Todos />, document.getElementById('root'));
This is just the tip of the iceberg.
All the wisdom of adding, removing, and completing tasks can be contained in one useReducer
Hook by adding additional actions.