Props con valores predefinidos en React
En otro artículo vimos como hacer que nuestro componente sea personalizable usando props. Y definimos un valor como fallback en caso de que este prop no tenga valor definido.
Y aunque funcionó la forma en que lo hicimos es propia de JavaScript mas no de React que posee su propia implementación de como definir valores por defecto de los props.
Hoy vamos a ver como hacerlo junto a otras formas propias de JavaScript.
Forma Actual
function Hello(props = {}) {
return React.createElement("h1", null, `Hola ${props.name || "Mundo"}!`);
}
Esto es lo que hicimos ayer, la forma en que funciona es que si props.name
no
existe el operador ||
va a hacer que se use "Mundo"
como valor.
Argumento por defecto
function Hello(props = { name: "Mundo" }) {
return React.createElement("h1", null, `Hola ${props.name}!`);
}
Esta es otra forma nativa de JavaScript, en este caso estamos haciendo que
props
por defecto sea un objeto con valores ya definidos en vez de un objeto
vacío.
Otra forma similar usando descomposición de objetos es hacer:
function Hello({ name = "Mundo" } = {}) {
return React.createElement("h1", null, `Hola ${name}!`);
}
En este caso props
es un objeto vacío del cual obtenemos la propiedad name
sin el resto de posibles valores y esta propiedad definimos que su valor por
defecto sea "Mundo"
.
La Forma de React
function Hello(props) {
return React.createElement("h1", null, `Hola ${props.name}!`);
}
Hello.defaultProps = {
name: "Mundo"
};
Por última la forma propia de React es agregando a nuestro componente una
propiedad estática llamada defaultProps
que es un objeto con todos los props y
sus valores por defecto que queramos definir.
De esta forma React al hacer render va a usar estos valores en caso de que estos props no estén definidos.
Con esto ya vimos varias formas de definir valores por defecto, si actualizamos nuestro ejemplo quedaría el siguiente código.
function Hello(props) {
return React.createElement("h1", null, `Hola ${props.name}!`);
}
Hello.defaultProps = {
name: "Mundo"
};
const element = React.createElement(Hello, { name: "Sergio" });
const node = document.getElementById("app");
ReactDOM.render(element, node);
Listo, ahora estamos listos para ver los diferentes tipos de datos en React