🔧 Una Visión Completa de los Hooks Integrados en React 🚀
Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to
Los Hooks en React te permiten usar las características de React desde tus componentes funcionales. Aquí tienes una guía sobre los hooks integrados más importantes y cómo usarlos con ejemplos.
Hooks de Estado 🧠
useState
useState
te permite agregar estado a un componente funcional.
import { useState } from "react";
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
useReducer
useReducer
es útil para manejar estados complejos con lógica de actualización dentro de una función reductora.
import { useReducer } from "react";
const initialState = { count: 0 };
function reducer(state, action) {
switch (action.type) {
case 'increment':
return { count: state.count + 1 };
case 'decrement':
return { count: state.count - 1 };
default:
throw new Error();
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, initialState);
return (
<div>
<p>Count: {state.count}</p>
<button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
<button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
</div>
);
}
Hooks de Contexto 🌐
useContext
useContext
permite a un componente suscribirse a un contexto sin pasar props.
import { useContext } from "react";
import { ThemeContext } from "./ThemeContext";
function ThemedButton() {
const theme = useContext(ThemeContext);
return (
<button style={{ background: theme.background, color: theme.color }}>
Themed Button
</button>
);
}
Hooks de Referencia 🪝
useRef
useRef
te permite acceder a un elemento DOM directamente.
import { useRef } from "react";
function TextInput() {
const inputRef = useRef(null);
const focusInput = () => {
inputRef.current.focus();
};
return (
<div>
<input ref={inputRef} type="text" />
<button onClick={focusInput}>Focus Input</button>
</div>
);
}
Hooks de Efecto 🌟
useEffect
useEffect
se usa para efectos secundarios en componentes, como obtener datos o suscribirse a eventos.
import { useEffect, useState } from "react";
function DataFetcher({ url }) {
const [data, setData] = useState(null);
useEffect(() => {
const fetchData = async () => {
const response = await fetch(url);
const result = await response.json();
setData(result);
};
fetchData();
}, [url]);
return (
<div>
<pre>{JSON.stringify(data, null, 2)}</pre>
</div>
);
}
Hooks de Performance ⚡
useMemo
useMemo
memoriza un cálculo costoso y lo reutiliza.
import { useMemo } from "react";
function TodoList({ todos, tab }) {
const visibleTodos = useMemo(() => {
return todos.filter(todo => todo.tab === tab);
}, [todos, tab]);
return (
<ul>
{visibleTodos.map(todo => (
<li key={todo.id}>{todo.text}</li>
))}
</ul>
);
}
useCallback
useCallback
memoriza una función para evitar recrearla en cada renderizado.
import { useCallback } from "react";
function ParentComponent() {
const handleClick = useCallback(() => {
console.log("Button clicked");
}, []);
return <ChildComponent onClick={handleClick} />;
}
function ChildComponent({ onClick }) {
return <button onClick={onClick}>Click me</button>;
}
Hooks de Transición 🌈
useTransition
useTransition
marca una transición de estado como no bloqueante.
import { useState, useTransition } from "react";
function List({ items }) {
const [isPending, startTransition] = useTransition();
const [query, setQuery] = useState('');
const handleChange = (e) => {
startTransition(() => {
setQuery(e.target.value);
});
};
const filteredItems = items.filter(item => item.includes(query));
return (
<div>
<input type="text" value={query} onChange={handleChange} />
{isPending && <p>Loading...</p>}
<ul>
{filteredItems.map(item => (
<li key={item}>{item}</li>
))}
</ul>
</div>
);
}
useDeferredValue
useDeferredValue
difiere la actualización de una parte no crítica de la UI.
import { useState, useDeferredValue } from "react";
function SearchResults({ query, results }) {
const deferredQuery = useDeferredValue(query);
const filteredResults = results.filter(item => item.includes(deferredQuery));
return (
<ul>
{filteredResults.map(result => (
<li key={result}>{result}</li>
))}
</ul>
);
}
Conclusión 🎉
Los Hooks en React son herramientas poderosas que te permiten gestionar el estado, el contexto, los efectos y la performance de tus componentes funcionales de manera eficiente. Utilizar estos hooks de forma correcta puede mejorar significativamente la calidad y mantenibilidad de tu código. Happy coding! 🚀
...
🔧 Dominando Set en JavaScript: Una Guía Completa
📈 40.51 Punkte
🔧 Programmierung
🔧 Dominando Map en JavaScript: Una Guía Completa
📈 40.51 Punkte
🔧 Programmierung
🔧 Testes integrados com Wiremock
📈 33.73 Punkte
🔧 Programmierung
🔧 Testes integrados com Spring
📈 33.73 Punkte
🔧 Programmierung
🕵️ Low CVE-2019-14804: UNA UNA
📈 33.58 Punkte
🕵️ Sicherheitslücken