diff --git a/src/content/learn/passing-props-to-a-component.md b/src/content/learn/passing-props-to-a-component.md
index da5fc5efc..703c4d2ae 100644
--- a/src/content/learn/passing-props-to-a-component.md
+++ b/src/content/learn/passing-props-to-a-component.md
@@ -1,26 +1,26 @@
---
-title: Passing Props to a Component
+title: Pasar props a un componente
---
-React components use *props* to communicate with each other. Every parent component can pass some information to its child components by giving them props. Props might remind you of HTML attributes, but you can pass any JavaScript value through them, including objects, arrays, and functions.
+Los componentes de React utilizan *props* para comunicarse entre sí. Cada componente padre puede enviar información a sus componentes hijos mediante el uso de props. Las props pueden parecerte similares a los atributos HTML, pero permiten pasar cualquier valor de JavaScript a través de ellas, como objetos, arrays y funciones.
-* How to pass props to a component
-* How to read props from a component
-* How to specify default values for props
-* How to pass some JSX to a component
-* How props change over time
+* Cómo pasar props a un componente
+* Cómo acceder a las props desde un componente
+* Cómo asignar valores predeterminados para las props
+* Cómo pasar código JSX a un componente
+* Cómo las props cambian con el tiempo
-## Familiar props {/*familiar-props*/}
+## Props conocidas {/*familiar-props*/}
-Props are the information that you pass to a JSX tag. For example, `className`, `src`, `alt`, `width`, and `height` are some of the props you can pass to an ``:
+Las props son los datos que se pasan a un elemento JSX. Por ejemplo, `className`, `src`, `alt`, `width` y `height` son algunas de las props que se pueden pasar a un elemento ``:
@@ -51,11 +51,11 @@ body { min-height: 120px; }
-The props you can pass to an `` tag are predefined (ReactDOM conforms to [the HTML standard](https://www.w3.org/TR/html52/semantics-embedded-content.html#the-img-element)). But you can pass any props to *your own* components, such as ``, to customize them. Here's how!
+Las props que puedes utilizar con una etiqueta `` están predefinidas (ReactDOM se ajusta al [estándar HTML](https://www.w3.org/TR/html52/semantics-embedded-content.html#the-img-element)). Sin embargo, puedes pasar cualquier prop a *tus propios* componentes, como ``, para personalizarlos. ¡Aquí te mostramos cómo hacerlo!
-## Passing props to a component {/*passing-props-to-a-component*/}
+## Pasar props a un componente {/*passing-props-to-a-component*/}
-In this code, the `Profile` component isn't passing any props to its child component, `Avatar`:
+En este código, el componente `Profile` no está pasando ninguna prop a su componente hijo, `Avatar`:
```js
export default function Profile() {
@@ -65,11 +65,11 @@ export default function Profile() {
}
```
-You can give `Avatar` some props in two steps.
+Puedes pasar props al elemento `Avatar` en dos pasos.
-### Step 1: Pass props to the child component {/*step-1-pass-props-to-the-child-component*/}
+### Paso 1: Pasar props al component hijo {/*step-1-pass-props-to-the-child-component*/}
-First, pass some props to `Avatar`. For example, let's pass two props: `person` (an object), and `size` (a number):
+Primero, pasa algunas props al elemento `Avatar`. Por ejemplo, vamos a asignar dos props: `person` (un objeto) y `size` (un número):
```js
export default function Profile() {
@@ -84,25 +84,25 @@ export default function Profile() {
-If double curly braces after `person=` confuse you, recall [they're merely an object](/learn/javascript-in-jsx-with-curly-braces#using-double-curlies-css-and-other-objects-in-jsx) inside the JSX curlies.
+Si te resulta confuso el uso de llaves dobles después de `person=`, recuerda que [simplemente estamos pasando un objeto](/learn/javascript-in-jsx-with-curly-braces#using-double-curlies-css-and-other-objects-in-jsx) dentro de las llaves JSX.
-Now you can read these props inside the `Avatar` component.
+Ahora puedes acceder a estas props dentro del componente `Avatar`.
-### Step 2: Read props inside the child component {/*step-2-read-props-inside-the-child-component*/}
+### Paso 2: Acceder a props dentro del componente hijo {/*step-2-read-props-inside-the-child-component*/}
-You can read these props by listing their names `person, size` separated by the commas inside `({` and `})` directly after `function Avatar`. This lets you use them inside the `Avatar` code, like you would with a variable.
+Puedes acceder a estas props especificando sus nombres `person, size` separados por comas dentro de `({` y `})` justo después de `function Avatar`. Esto te permitirá utilizarlas dentro del código de `Avatar` como si fueran variables.
```js
function Avatar({ person, size }) {
- // person and size are available here
+ // puedes acceder a los valores de person y size desde aquí
}
```
-Add some logic to `Avatar` that uses the `person` and `size` props for rendering, and you're done.
+Agrega lógica a `Avatar` que utilice las props `person` y `size` para la renderización, ¡y eso es todo!.
-Now you can configure `Avatar` to render in many different ways with different props. Try tweaking the values!
+Ahora puedes configurar `Avatar` para que se renderice de diferentes maneras con distintas props. ¡Prueba ajustando los valores!
@@ -168,9 +168,9 @@ body { min-height: 120px; }
-Props let you think about parent and child components independently. For example, you can change the `person` or the `size` props inside `Profile` without having to think about how `Avatar` uses them. Similarly, you can change how the `Avatar` uses these props, without looking at the `Profile`.
+Las props te permiten considerar de forma independiente los componentes padre e hijo. Por ejemplo, puedes modificar las props `person` o `size` dentro del componente `Profile` sin preocuparte por cómo serán utilizadas por el componente `Avatar`. De manera similar, puedes cambiar la forma en que `Avatar` utiliza estas props sin necesidad de revisar el componente `Profile`.
-You can think of props like "knobs" that you can adjust. They serve the same role as arguments serve for functions—in fact, props _are_ the only argument to your component! React component functions accept a single argument, a `props` object:
+Considera las props como "controles" que puedes ajustar. Cumplen el mismo papel que los argumentos de una función—de hecho, ¡las props _son_ el único argumento de tu componente! Las funciones de los componentes de React aceptan un único argumento, un objeto `props`:
```js
function Avatar(props) {
@@ -180,11 +180,11 @@ function Avatar(props) {
}
```
-Usually you don't need the whole `props` object itself, so you destructure it into individual props.
+En general, no necesitas acceder al objeto completo de `props`, por lo que puedes desestructurarlo en props individuales.
-**Don't miss the pair of `{` and `}` curlies** inside of `(` and `)` when declaring props:
+**Asegurate de incluir el par de llaves `{` y `}`** dentro de `(` y `)` al declarar las props:
```js
function Avatar({ person, size }) {
@@ -192,7 +192,7 @@ function Avatar({ person, size }) {
}
```
-This syntax is called ["destructuring"](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Unpacking_fields_from_objects_passed_as_a_function_parameter) and is equivalent to reading properties from a function parameter:
+Esta sintaxis se conoce como ["desestructuración"](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#desempacar_campos_de_objetos_pasados_como_parámetro_de_función) y es equivalente a acceder a propiedades de un parámetro de función:
```js
function Avatar(props) {
@@ -204,9 +204,9 @@ function Avatar(props) {
-## Specifying a default value for a prop {/*specifying-a-default-value-for-a-prop*/}
+## Asignar un valor predeterminado para una prop {/*specifying-a-default-value-for-a-prop*/}
-If you want to give a prop a default value to fall back on when no value is specified, you can do it with the destructuring by putting `=` and the default value right after the parameter:
+Si quieres asignar un valor predeterminado para una prop en caso de que no se especifique ningún valor, puedes hacerlo mediante la desestructuración colocando `=` seguido del valor predeterminado justo después del parámetro:
```js
function Avatar({ person, size = 100 }) {
@@ -214,13 +214,13 @@ function Avatar({ person, size = 100 }) {
}
```
-Now, if `` is rendered with no `size` prop, the `size` will be set to `100`.
+Ahora, si renderizas `` sin la prop `size`, el valor de `size` se establecerá automáticamente en `100`.
-The default value is only used if the `size` prop is missing or if you pass `size={undefined}`. But if you pass `size={null}` or `size={0}`, the default value will **not** be used.
+El valor predeterminado sólo se utilizará si falta la prop `size` o si se pasa `size={undefined}`. Sin embargo, si se pasa `size={null}` o `size={0}`, el valor predeterminado **no** se aplicará.
-## Forwarding props with the JSX spread syntax {/*forwarding-props-with-the-jsx-spread-syntax*/}
+## Reenviar props con la sintaxis de propagación JSX {/*forwarding-props-with-the-jsx-spread-syntax*/}
-Sometimes, passing props gets very repetitive:
+A veces, pasar props se vuelve muy repetitivo:
```js
function Profile({ person, size, isSepia, thickBorder }) {
@@ -237,7 +237,7 @@ function Profile({ person, size, isSepia, thickBorder }) {
}
```
-There's nothing wrong with repetitive code—it can be more legible. But at times you may value conciseness. Some components forward all of their props to their children, like how this `Profile` does with `Avatar`. Because they don't use any of their props directly, it can make sense to use a more concise "spread" syntax:
+No hay ningún problema en tener código repetitivo—ya que puede ser más legible. Sin embargo, en ocasiones, es posible que prefieras ser más conciso. Algunos componentes reenvían todas sus props a sus hijos, como lo hace `Profile` con `Avatar`. Dado que no utilizan directamente ninguna de sus props, tiene sentido utilizar una sintaxis de "propagación" más concisa:
```js
function Profile(props) {
@@ -249,13 +249,13 @@ function Profile(props) {
}
```
-This forwards all of `Profile`'s props to the `Avatar` without listing each of their names.
+Esto permite reenviar todas las props de `Profile` a `Avatar` sin la necesidad de especificar cada una de ellas.
-**Use spread syntax with restraint.** If you're using it in every other component, something is wrong. Often, it indicates that you should split your components and pass children as JSX. More on that next!
+**Recuerda utilizar la sintaxis de propagación con moderación.** Si estás utilizando esta sintaxis en cada componente, es probable que algo no esté correctamente estructurado. En muchos casos, esto sugiere que deberías dividir tus componentes y pasar los hijos como elementos JSX separados. ¡Más información sobre esto a continuación!
-## Passing JSX as children {/*passing-jsx-as-children*/}
+## Pasar JSX como hijos {/*passing-jsx-as-children*/}
-It is common to nest built-in browser tags:
+Es común anidar etiquetas nativas del navegador:
```js
@@ -263,7 +263,7 @@ It is common to nest built-in browser tags:
```
-Sometimes you'll want to nest your own components the same way:
+En ocasiones, querrás anidar tus propios componentes de la misma forma:
```js
@@ -271,7 +271,7 @@ Sometimes you'll want to nest your own components the same way:
```
-When you nest content inside a JSX tag, the parent component will receive that content in a prop called `children`. For example, the `Card` component below will receive a `children` prop set to `` and render it in a wrapper div:
+Al anidar contenido dentro de una etiqueta JSX, el componente padre recibirá ese contenido a través de una prop llamada `children`. En el ejemplo a continuación, el componente `Card` recibe una prop `children` con el valor de `` y lo renderiza dentro de un div contenedor:
@@ -347,17 +347,17 @@ export function getImageUrl(person, size = 's') {
-Try replacing the `` inside `` with some text to see how the `Card` component can wrap any nested content. It doesn't need to "know" what's being rendered inside of it. You will see this flexible pattern in many places.
+Prueba cambiando `` dentro de `` con algún texto para ver cómo el componente `Card` puede envolver cualquier contenido anidado. No es necesario que el componente "sepa" qué se está renderizando dentro de él. Este patrón flexible se puede observar en muchos casos.
-You can think of a component with a `children` prop as having a "hole" that can be "filled in" by its parent components with arbitrary JSX. You will often use the `children` prop for visual wrappers: panels, grids, etc.
+Puedes imaginar un componente con una prop `children` como si tuviera un "hueco" que puede ser "llenado" por sus componentes padres con JSX arbitrario. La prop `children` suele utilizarse para crear envoltorios visuales como paneles, rejillas, etc.
-## How props change over time {/*how-props-change-over-time*/}
+## Cómo las props cambian con el tiempo {/*how-props-change-over-time*/}
-The `Clock` component below receives two props from its parent component: `color` and `time`. (The parent component's code is omitted because it uses [state](/learn/state-a-components-memory), which we won't dive into just yet.)
+El componente `Clock` que se muestra a continuación recibe dos props de su componente padre: `color` y `time`. (Se omite el código del componente padre porque utiliza [estado](/learn/state-a-components-memory), del cual no ahondaremos en este momento.)
-Try changing the color in the select box below:
+Prueba cambiando el color en la lista desplegable que aparece a continuación:
@@ -392,7 +392,7 @@ export default function App() {
return (