nicolas restrepo
javascript developer
Solo Para la UI.
Virtual DOM.
Flujo de datos reactivo y unidireccional
Tu aplicación es un árbol de componentes
Algunas caraterísticas
Una extensión de javascript creada por Facebook para usar con React.js, esta extensión nos permite definir nuestros componentes con una sintaxis que parece HTML.
JSX
JAVASCRIPT
Trabajas con una copia muy ligera del DOM
Interfaces mas dinámicas
Menores tiempos de carga
Los componentes puros son usados para renderizar la UI, estos no contienen lógica en su interior.
muy reutilizables
más fáciles de testear
mayor legibilidad
los compontentes de estado, tienen lógica en su interior, y esto les permite manejar los componentes puros pasándoles props
los componentes que tienen estado cuentan con algo llamado ciclo de vida, este ciclo de vida son una serie de funciones que se ejecutan en determinado momento de nuestro componente y nos permite realizar distintas acciones.
Fases del ciclo de vida
Montado
Actualización
Desmontado
Montado
constructor(props)
static getDeriveStateFromProps()
render()
componentDidMount()
Actualización
static getDeriveStateFromProps()
shouldComponentUpdate(nextProps, nextState)
getSnapshotBeforeUpdate()
render()
Desmontado
componentWillUnmount()
Nueva Forma en que escribiremos React, al no usar clases y teniendo en el componente un manejo más simple del estado interno.
import React, { useState } from 'react';
function Example() {
// Declare a new state variable, which we'll call "count"
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}useState
useEffect
import React, { useState, useEffect } from 'react';
function FriendStatus(props) {
const [isOnline, setIsOnline] = useState(null);
// componentDidMount and componentDidUpdate
useEffect(() => {
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
// componentWillUnMount
return function cleanup() {
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
};
});
if (isOnline === null) {
return 'Loading...';
}
return isOnline ? 'Online' : 'Offline';
}const MyComponent = React.memo(function MyComponent(props) {
/* only rerenders if props change */
});Gracias.
By nicolas restrepo