Tutorial - Como crear un simple contador con Reactjs - Hooks - useState

Tecnología
  
Programación Web
  
Javascript
  
React
    02 Febrero, 2021   Regresar el blog
Compartir:

Hoy vamos a aprender a como crear un simple contador con Reactjs que nos permitirá practicar el uso del hook llamado useState

Para iniciar nos vamos al escritorio y escribimos en la terminal de nuestro sistema el siguiente comando:

npx create-react-app counter

Una vez terminado procedemos a abrir nuestro proyecto con nuestro editor de código favorito en mi caso visual studio code

Procedemos a limpiar lo que no usaremos para este tutorial quedando nuestro proyecto de la siguiente manera:


Procedemos a modificar nuestro app.js con el siguiente contenido:

App.js
function App() {
return (
    <div>
      <h1>0</h1>
      <div>
        <button>-</button>
        <button>+</button>
      </div>
    </div>
  );
}
export default App;

Quedando nuestro ejemplo de la siguiente manera:


Ahora vamos a incorporar la funciononabilidad del contador para eso hacemos usao del hook llamado useState de react

App.js
import {useState} from ´react´
function App() {
return (
    <div>
      <h1>0</h1>
      <div>
        <button>-</button>
        <button>+</button>
      </div>
    </div>
  );
}
export default App;

Creamos antes del return el siguiente código para inicializar nuestro contador const [counter,setCounter] = useState(0)

App.js
import {useState} from ´react´
function App() {
const [counter,setCounter] = useState(0)
return (
    <div>
      <h1>{counter}</h1>
      <div>
        <button>-</button>
        <button>+</button>
      </div>
    </div>
  );
}
export default App;

Asignamos dentro del h1 el valor del counter {counter} entre llaves (Código jsx) y procedemos a hacer funcionar los botones de - & + respectivamente onClick={()=>setCounter(counter-1)} onClick={()=>setCounter(counter+1)} quedando el código de la siguiente manera:

App.js
import {useState} from ´react´
function App() {
const [counter,setCounter] = useState(0)
return (
    <div>
      <h1>{counter}</h1>
      <div>
        <button onClick={()=>setCounter(counter-1)} >-</button>
        <button onClick={()=>setCounter(counter+1)} >+</button>
      </div>
    </div>
  );
}
export default App;

Y con eso ya tenemos la funcionalidad del tutorial listo, lo que queda por hacer es darle estilos a nuestro ejemplo para ello modificamos el index.css con los siguientes estilos:

@import url(´https://fonts.googleapis.com/css2?family=Spartan&display=swap´);
*,
*::before,
*::after{
  box-sizing: border-box;
  margin:0;
  padding:0;
}
.app {
  font-family: ´Spartan´, sans-serif;
  display:flex;
  flex-direction: column;
  justify-content:center;
  align-items:center;
  gap: 2rem;
  height: 100vh;
  color: #222;
}
h1 {
  font-size: 6rem;
}
.app .botones {
  display: flex;
  gap: 1rem;
}
.app .botones * {
  border: none;
  background-color: #444;
  box-shadow: 0px 0px 10px #cfd8dc;
  font-weight: bold;
  font-size: 2rem;
  color: orange;
  border-radius: 50%;
  height: 4rem;
  width: 4rem;
  cursor: pointer;
  outline: none;
  transition: background-color 250ms ease-in-out, transform 50ms ease-in-out;
}
.app .botones *:hover {
  background-color: #cfd8dc;
}
.app .botones *:active {
  transform: scale(0.9);
}
.negativo {
  color: #c00;
  animation: pulse 500ms ease-in-out;
}
.positivo {
  color: #72c02c;
  animation: pulse 500ms ease-in-out;
}
@keyframes pulse {
  0%,
  100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.2);
  }
}

Quedando nuestro ejemplo de la siguiente manera:


Lo último por hacer será que cuando el valor sea negativo el color de fuente cambie a rojo y cuando el valor sea mayor que cero cambie a verde y cuando sea 0 que mantenga el color default, para hacer eso creamos una condicional ternaria dentro de la clase del h1 de la siguiente manera:

import {useState} from ´react´
function App() {
  const[counter,setCounter] = useState(0)
return (
    <div className="app">
      <h1 className={counter < 0 ? ´negativo´ : counter > 0 ? ´positivo´ : null }>{counter}</h1>
      <div className="botones">
        <button onClick={()=>setCounter(counter-1)}>-</button>
        <button onClick={()=>setCounter(counter+1)}>+</button>
      </div>
    </div>
  );
}
export default App;

Quedando de la siguiente manera:


Aquí pueden ver el ejemplo en vivo






Y con esa amigos llegamos al final del tutorial, espero que lo hayan disfrutado y hasta la próxima!


Visita mi sitio web oficial

tupaginaonline.net

203 vistas
Compartir:


Autor
Jose Fuentes

- Web Developer -

 


0 COMENTARIO(S)
Contesta
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *
Comentario *
Nombre *
Correo electrónico *
Sitio web

Articulos Relacionados
Articulos recientes

Desarrollos en venta

$ usd dólar 600