diff --git a/content/docs/composition-vs-inheritance.md b/content/docs/composition-vs-inheritance.md
index c86735ef7..16e92dcaf 100644
--- a/content/docs/composition-vs-inheritance.md
+++ b/content/docs/composition-vs-inheritance.md
@@ -1,6 +1,6 @@
---
id: composition-vs-inheritance
-title: Composition vs Inheritance
+title: Composición vs Herencia
permalink: docs/composition-vs-inheritance.html
redirect_from:
- "docs/multiple-components.html"
@@ -8,15 +8,15 @@ prev: lifting-state-up.html
next: thinking-in-react.html
---
-React has a powerful composition model, and we recommend using composition instead of inheritance to reuse code between components.
+React tiene un potente modelo de composición, y recomendamos usar composición en lugar de herencia para reutilizar código entre componentes.
-In this section, we will consider a few problems where developers new to React often reach for inheritance, and show how we can solve them with composition.
+En esta sección consideraremos algunos problemas en los que los desarrolladores nuevos en React a menudo emplean herencia, y mostraremos cómo los podemos resolver con composición.
-## Containment {#containment}
+## Contención {#containment}
-Some components don't know their children ahead of time. This is especially common for components like `Sidebar` or `Dialog` that represent generic "boxes".
+Algunos componentes no conocen sus hijos de antemano. Esto es especialmente común para componentes como `Sidebar` o `Dialog` que representan "cajas" genéricas.
-We recommend that such components use the special `children` prop to pass children elements directly into their output:
+Recomendamos que estos componentes usen la prop especial children para pasar elementos hijos directamente en su resultado:
```js{4}
function FancyBorder(props) {
@@ -28,28 +28,28 @@ function FancyBorder(props) {
}
```
-This lets other components pass arbitrary children to them by nesting the JSX:
+Esto permite que otros componentes les pasen hijos arbitrarios anidando el JSX:
```js{4-9}
function WelcomeDialog() {
return (
- Welcome
+ Bienvenidos
- Thank you for visiting our spacecraft!
+ ¡Gracias por visitar nuestra nave espacial!
);
}
```
-**[Try it on CodePen](https://codepen.io/gaearon/pen/ozqNOV?editors=0010)**
+**[Pruébalo en CodePen](https://codepen.io/gaearon/pen/ozqNOV?editors=0010)**
-Anything inside the `` JSX tag gets passed into the `FancyBorder` component as a `children` prop. Since `FancyBorder` renders `{props.children}` inside a `
`, the passed elements appear in the final output.
+Cualquier cosa dentro de la etiqueta JSX `` se pasa dentro del componente `FancyBorder` como la prop `children`. Como `FancyBorder` renderiza `{props.children}` dentro de un `
`, los elementos que se le han pasado aparecen en el resultado final.
-While this is less common, sometimes you might need multiple "holes" in a component. In such cases you may come up with your own convention instead of using `children`:
+Aunque es menos común, a veces puedes necesitar múltiples "agujeros" en un componente. En estos casos puedes inventarte tu propia convención en lugar de usar `children`:
```js{5,8,18,21}
function SplitPane(props) {
@@ -78,15 +78,15 @@ function App() {
}
```
-[**Try it on CodePen**](https://codepen.io/gaearon/pen/gwZOJp?editors=0010)
+[**Pruébalo en CodePen**](https://codepen.io/gaearon/pen/gwZOJp?editors=0010)
-React elements like `` and `` are just objects, so you can pass them as props like any other data. This approach may remind you of "slots" in other libraries but there are no limitations on what you can pass as props in React.
+Los elementos como `` y `` son simplemente objetos, por lo que puedes pasarlos como props como cualquier otro dato. Este enfoque puede recordarte a "huecos" (slots) en otras bibliotecas, pero no hay limitaciones en lo que puedes pasar como props en React.
-## Specialization {#specialization}
+## Especialización {#specialization}
-Sometimes we think about components as being "special cases" of other components. For example, we might say that a `WelcomeDialog` is a special case of `Dialog`.
+A veces pensamos en componentes como "casos concretos" de otros componentes. Por ejemplo, podríamos decir que un `WelcomeDialog` es un caso concreto de `Dialog`.
-In React, this is also achieved by composition, where a more "specific" component renders a more "generic" one and configures it with props:
+En React, esto también se consigue por composición, en la que un componente más "específico" renderiza uno más "genérico" y lo configura con props:
```js{5,8,16-18}
function Dialog(props) {
@@ -105,15 +105,15 @@ function Dialog(props) {
function WelcomeDialog() {
return (
+ title="Bienvenidos"
+ message="¡Gracias por visitar nuestra nave espacial!" />
);
}
```
-[**Try it on CodePen**](https://codepen.io/gaearon/pen/kkEaOZ?editors=0010)
+[**Pruébalo en CodePen**](https://codepen.io/gaearon/pen/kkEaOZ?editors=0010)
-Composition works equally well for components defined as classes:
+La composición funciona igual de bien para componentes definidos como clases:
```js{10,27-31}
function Dialog(props) {
@@ -140,12 +140,12 @@ class SignUpDialog extends React.Component {
render() {
return (
-