Giter Site home page Giter Site logo

03-calculadora's Introduction

React-FreeCodeCamp-ESP

Aprendiendo React con el canal de YouTube de FreeCodeCamp en español. Los proyectos siguen el video: https://www.youtube.com/watch?v=6Jfk8ic3KVk.

03 Calculadora interactiva

Crear una calculadora: tutorial de https://www.youtube.com/watch?v=6Jfk8ic3KVk&t=13923s.

1.1 Qué aprendí:

  • Usar props.children para pasar datos a componentes.
    • Se declara el componente con dos etiquetas una de apertura y otra de cierre.

Para el componente Padre:

<BotonClear>Clear</BotonClear>

Para el Componente hijo:

const BotonClear = (props) => <div>{props.children}</div>;
  • Usar template literals para crear clases condicionales en los botones.
    • usar el metodo trimend para quitar espacios vacios.
<div
  className={`boton-contenedor ${
    esOperador(props.children) ? "operador" : ""
  }`.trimEnd()}
></div>;
const esOperador = (valor) => {
  return isNaN(valor) && valor != "." && valor != "=";
};
  • Uso de propiedad Flex:1 1; para permitir que los elementos se acomoden y tomen espacios equitativos.
.boton-contenedor {
  display: flex;
  flex: 1 1;
  justify-content: center;
  align-items: center;
}
  • Definir un componente como const y función flecha.
    • Normalmente se usa cuando el componente es sencillo. Lo más común es definir un componente con la palabra function.

Declarar componente pantalla:

const Pantalla = ({ input }) => <div className="input">{input}</div>;

Declarar componente Boton:

function Boton(props) {}
  • Cuando se pasa un función como un prop se puede hacer directamente en la línea de llamado del componente (ver BotonClear en App.jsx)
    • Tener cuidado que al pasar una función como un prop se generan dos opciones. Una es hacer el llamado a la funcion con ( ) y otra es la ejecucion literal de la funcion anónima a través del nombre del prop que se pasó; en este caso no se colocan ( ).

Ejecurar la función asociada al prop manejarClear

/* NOTA: NO se requieren () luego del prop manejarClear */
const BotonClear = (props) => (
  <div onClick={props.manejarClear}>{props.children}</div>
);

Llamar la función asociada al prop manejarClear

/* NOTA: Si se usan () luego del prop manejarClear (este es el llamado) y se debe usar una función flecha para ejecutar la función que espera el onClic*/
const BotonClear = (props) => (
  <div onClick={() => props.manejarClear()}>{props.children}</div>
);
  • Ver que el event listener onClick espera una función (diferente al llamado de una función) entonces se usa una funcion flecha que ejecuta la función que se pasó como prop al componente.
/* NOTA: ver que se está pasando prop.children al argumento de la función */
function Boton(props) {
  return (
    <div onClick={() => props.manejarClic(props.children)}>
      {props.children}
    </div>
  );
}
  • Importar libreria MathJS para evaluar operaciones con base en una cadena de texto.
import { evaluate } from "mathjs";

const calcularResultado = () => {
  setInput(evaluate(input));
};

03-calculadora's People

Contributors

icabulo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.