Skip to content

Commit 9bc946e

Browse files
welllglaucia86
authored andcommitted
Translate composition-vs-inheritance (#136)
* Update composition-vs-inheritance.md Update composition-vs-inheritance.md Update composition-vs-inheritance.md * Update composition-vs-inheritance.md
1 parent 8dc5f9d commit 9bc946e

File tree

1 file changed

+31
-33
lines changed

1 file changed

+31
-33
lines changed

content/docs/composition-vs-inheritance.md

+31-33
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
---
22
id: composition-vs-inheritance
3-
title: Composition vs Inheritance
3+
title: Composição vs Herança
44
permalink: docs/composition-vs-inheritance.html
55
redirect_from:
66
- "docs/multiple-components.html"
77
prev: lifting-state-up.html
88
next: thinking-in-react.html
99
---
1010

11-
React has a powerful composition model, and we recommend using composition instead of inheritance to reuse code between components.
11+
O React tem um poderoso modelo de composição, e por isso recomendamos o uso de composição ao invés de herança para reutilizar código entre componentes.
1212

13-
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.
13+
Nesta página, iremos demonstrar alguns problemas encontrados pelos desenvolvedores que estão iniciando com o React e esbarram em situações com herança, e mostraremos como podemos resolver utilizando composição.
1414

15-
## Containment {#containment}
15+
## Contenção {#containment}
1616

17-
Some components don't know their children ahead of time. This is especially common for components like `Sidebar` or `Dialog` that represent generic "boxes".
18-
19-
We recommend that such components use the special `children` prop to pass children elements directly into their output:
17+
Alguns componentes não tem como saber quem serão seus elementos filhos. Isso é muito comum para componentes como o `SideBar` ou `Dialog` que representam "caixas" genéricas.
2018

19+
Recomendamos que esses componentes utilizem a prop especial `children` para passar os elementos filhos diretos para sua respectiva saída:
2120
```js{4}
2221
function FancyBorder(props) {
2322
return (
@@ -28,28 +27,26 @@ function FancyBorder(props) {
2827
}
2928
```
3029

31-
This lets other components pass arbitrary children to them by nesting the JSX:
32-
30+
Isso permite outros componentes passar elementos filhos no próprio JSX:
3331
```js{4-9}
3432
function WelcomeDialog() {
3533
return (
3634
<FancyBorder color="blue">
3735
<h1 className="Dialog-title">
38-
Welcome
36+
Bem-vindo
3937
</h1>
4038
<p className="Dialog-message">
41-
Thank you for visiting our spacecraft!
39+
Obrigado por visitar a nossa espaçonave!
4240
</p>
4341
</FancyBorder>
4442
);
4543
}
4644
```
4745

48-
**[Try it on CodePen](https://codepen.io/gaearon/pen/ozqNOV?editors=0010)**
49-
50-
Anything inside the `<FancyBorder>` JSX tag gets passed into the `FancyBorder` component as a `children` prop. Since `FancyBorder` renders `{props.children}` inside a `<div>`, the passed elements appear in the final output.
46+
**[Experimente no CodePen](https://codepen.io/gaearon/pen/ozqNOV?editors=0010)**
47+
Qualquer conteúdo dentro da tag JSX do componente `<FancyBorder>` vai ser passado ao componente `FancyBorder` como prop `children`. Desde que `FancyBorder` renderize a `{props.children}` dentro de uma `<div>`, os elementos serão renderizados no resultado final.
5148

52-
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`:
49+
Mesmo que seja incomum, as vezes pode ser que você precise de diversos "buracos" no componente. Em alguns casos você pode criar sua própria convenção e não utilizar a prop `children`:
5350

5451
```js{5,8,18,21}
5552
function SplitPane(props) {
@@ -78,15 +75,16 @@ function App() {
7875
}
7976
```
8077

81-
[**Try it on CodePen**](https://codepen.io/gaearon/pen/gwZOJp?editors=0010)
78+
[**Experimente no CodePen**](https://codepen.io/gaearon/pen/gwZOJp?editors=0010)
8279

83-
React elements like `<Contacts />` and `<Chat />` 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.
80+
Os elementos React como `<Contacts/>` e `<Chat/>` são apenas objetos, e você pode passá-los como props assim como faz com outros tipos de dados. Esta abordagem pode soar familiar como "slots" em outras bibliotecas, mas no React não existe limitações sobre o que pode ser passado como props.
8481

85-
## Specialization {#specialization}
82+
## Especialização {#specialization}
8683

87-
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`.
84+
Algumas vezes acabamos pensando em componentes como "casos especiais" de outros componentes, por exemplo, podemos dizer que o component `WelcomeDialog` é um caso especial de `Dialog`.
8885

89-
In React, this is also achieved by composition, where a more "specific" component renders a more "generic" one and configures it with props:
86+
No React, isto também pode ser obtido através do uso de composição, um componente específico renderiza um componente mais "genérico" e o configura com as suas respectivas props:
87+
9088

9189
```js{5,8,16-18}
9290
function Dialog(props) {
@@ -105,15 +103,15 @@ function Dialog(props) {
105103
function WelcomeDialog() {
106104
return (
107105
<Dialog
108-
title="Welcome"
109-
message="Thank you for visiting our spacecraft!" />
106+
title="Bem-vindo"
107+
message="Obrigado por visitar a nossa espaçonave!" />
110108
);
111109
}
112110
```
113111

114-
[**Try it on CodePen**](https://codepen.io/gaearon/pen/kkEaOZ?editors=0010)
112+
[**Experimente no CodePen**](https://codepen.io/gaearon/pen/kkEaOZ?editors=0010)
115113

116-
Composition works equally well for components defined as classes:
114+
A composição também irá funcionar para componentes escritos utilizando classe:
117115

118116
```js{10,27-31}
119117
function Dialog(props) {
@@ -140,12 +138,12 @@ class SignUpDialog extends React.Component {
140138
141139
render() {
142140
return (
143-
<Dialog title="Mars Exploration Program"
144-
message="How should we refer to you?">
141+
<Dialog title="Programa de Exploração de Marte"
142+
message="Como gostaria de ser chamado?">
145143
<input value={this.state.login}
146144
onChange={this.handleChange} />
147145
<button onClick={this.handleSignUp}>
148-
Sign Me Up!
146+
Cadastre-se!
149147
</button>
150148
</Dialog>
151149
);
@@ -156,17 +154,17 @@ class SignUpDialog extends React.Component {
156154
}
157155
158156
handleSignUp() {
159-
alert(`Welcome aboard, ${this.state.login}!`);
157+
alert(`Bem-vindo a bordo, ${this.state.login}!`);
160158
}
161159
}
162160
```
163161

164-
[**Try it on CodePen**](https://codepen.io/gaearon/pen/gwZbYa?editors=0010)
162+
[**Experimente no CodePen**](https://codepen.io/gaearon/pen/gwZbYa?editors=0010)
165163

166-
## So What About Inheritance? {#so-what-about-inheritance}
164+
## E sobre a herança? {#so-what-about-inheritance}
167165

168-
At Facebook, we use React in thousands of components, and we haven't found any use cases where we would recommend creating component inheritance hierarchies.
166+
No Facebook, nós usamos o React em milhares de componentes, e não encontramos nenhum caso que recomendaríamos criar componentes utilizando hierarquia de herança.
169167

170-
Props and composition give you all the flexibility you need to customize a component's look and behavior in an explicit and safe way. Remember that components may accept arbitrary props, including primitive values, React elements, or functions.
168+
O uso de props e composição irá te dar toda flexibilidade que você precisa para customizar o comportamento e aparência dos componentes, de uma maneira explícita e segura. Lembre-se de que os componentes podem aceitar um número variável de props, incluindo valores primitivos, como int, array, boolean; assim como elementos Reacts e funções.
171169

172-
If you want to reuse non-UI functionality between components, we suggest extracting it into a separate JavaScript module. The components may import it and use that function, object, or a class, without extending it.
170+
E se você desejar reutilizar funcionalidades (não gráficas) entre componentes, sugerimos que você a extraia em módulos JavaScript. Os componentes podem importar essa função, objeto ou classe sem precisar estender.

0 commit comments

Comments
 (0)