From acaf0ef7cb2eb283db51856affb2ddee2b42d60f Mon Sep 17 00:00:00 2001 From: "translate-react-bot[bot]" <251169733+translate-react-bot[bot]@users.noreply.github.com> Date: Thu, 14 May 2026 15:26:43 +0000 Subject: [PATCH 1/4] =?UTF-8?q?docs:=20translate=20`manipulating-the-dom-w?= =?UTF-8?q?ith-refs.md`=20to=20Portugu=C3=AAs=20(Brasil)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../learn/manipulating-the-dom-with-refs.md | 363 +++++------------- 1 file changed, 90 insertions(+), 273 deletions(-) diff --git a/src/content/learn/manipulating-the-dom-with-refs.md b/src/content/learn/manipulating-the-dom-with-refs.md index 2d1ee8685..de053886d 100644 --- a/src/content/learn/manipulating-the-dom-with-refs.md +++ b/src/content/learn/manipulating-the-dom-with-refs.md @@ -1,52 +1,52 @@ --- -title: 'Manipulating the DOM with Refs' +title: 'Manipulando o DOM com Refs' --- - +```html -React automatically updates the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction) to match your render output, so your components won't often need to manipulate it. However, sometimes you might need access to the DOM elements managed by React--for example, to focus a node, scroll to it, or measure its size and position. There is no built-in way to do those things in React, so you will need a *ref* to the DOM node. +o React atualiza automaticamente o [DOM](https://developer.mozilla.org/pt-BR/docs/Web/API/Document_Object_Model/Introduction) para corresponder à sua saída de renderização, então seus componentes geralmente não precisarão manipulá-lo. No entanto, às vezes você pode precisar acessar os elementos DOM gerenciados pelo React - por exemplo, para focar um nó, rolar até ele ou medir seu tamanho e posição. Não há uma maneira integrada de fazer essas coisas no React, então você precisará de um *ref* para o nó DOM. -- How to access a DOM node managed by React with the `ref` attribute -- How the `ref` JSX attribute relates to the `useRef` Hook -- How to access another component's DOM node -- In which cases it's safe to modify the DOM managed by React +- Como acessar um nó DOM gerenciado pelo React com o atributo `ref` +- Como o atributo `ref` JSX se relaciona com o Hook `useRef` +- Como acessar o nó DOM de outro componente +- Em quais casos é seguro modificar o DOM gerenciado pelo React -## Getting a ref to the node {/*getting-a-ref-to-the-node*/} +## Obtendo um ref para o nó {/*getting-a-ref-to-the-node*/} -To access a DOM node managed by React, first, import the `useRef` Hook: +Para acessar um nó DOM gerenciado pelo React, primeiro, importe o Hook `useRef`: ```js import { useRef } from 'react'; ``` -Then, use it to declare a ref inside your component: +Em seguida, use-o para declarar um ref dentro do seu componente: ```js const myRef = useRef(null); ``` -Finally, pass your ref as the `ref` attribute to the JSX tag for which you want to get the DOM node: +Finalmente, passe seu ref como o atributo `ref` para a tag JSX para a qual você deseja obter o nó DOM: ```js
``` -The `useRef` Hook returns an object with a single property called `current`. Initially, `myRef.current` will be `null`. When React creates a DOM node for this `
`, React will put a reference to this node into `myRef.current`. You can then access this DOM node from your [event handlers](/learn/responding-to-events) and use the built-in [browser APIs](https://developer.mozilla.org/docs/Web/API/Element) defined on it. +O Hook `useRef` retorna um objeto com uma única propriedade chamada `current`. Inicialmente, `myRef.current` será `null`. Quando o React cria um nó DOM para este `
`, o React colocará uma referência a este nó em `myRef.current`. Você pode então acessar este nó DOM de seus [manipuladores de eventos](/learn/responding-to-events) e usar as [APIs do navegador](https://developer.mozilla.org/pt-BR/docs/Web/API/Element) integradas definidas nele. ```js -// You can use any browser APIs, for example: +// Você pode usar qualquer API do navegador, por exemplo: myRef.current.scrollIntoView(); ``` -### Example: Focusing a text input {/*example-focusing-a-text-input*/} +### Exemplo: Focando uma entrada de texto {/*example-focusing-a-text-input*/} -In this example, clicking the button will focus the input: +Neste exemplo, clicar no botão focará a entrada: @@ -73,18 +73,18 @@ export default function Form() { -To implement this: +Para implementar isso: -1. Declare `inputRef` with the `useRef` Hook. -2. Pass it as ``. This tells React to **put this ``'s DOM node into `inputRef.current`.** -3. In the `handleClick` function, read the input DOM node from `inputRef.current` and call [`focus()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) on it with `inputRef.current.focus()`. -4. Pass the `handleClick` event handler to ` - {show &&

Hello world

} + {show &&

Olá mundo

}
); } @@ -647,30 +647,28 @@ button { -After you've manually removed the DOM element, trying to use `setState` to show it again will lead to a crash. This is because you've changed the DOM, and React doesn't know how to continue managing it correctly. +Depois de remover manualmente o elemento DOM, tentar usar `setState` para mostrá-lo novamente levará a uma falha. Isso ocorre porque você alterou o DOM e o React não sabe como continuar gerenciando-o corretamente. -**Avoid changing DOM nodes managed by React.** Modifying, adding children to, or removing children from elements that are managed by React can lead to inconsistent visual results or crashes like above. +**Evite alterar os nós DOM gerenciados pelo React.** Modificar, adicionar filhos ou remover filhos de elementos que são gerenciados pelo React pode levar a resultados visuais inconsistentes ou falhas como acima. -However, this doesn't mean that you can't do it at all. It requires caution. **You can safely modify parts of the DOM that React has _no reason_ to update.** For example, if some `
` is always empty in the JSX, React won't have a reason to touch its children list. Therefore, it is safe to manually add or remove elements there. +No entanto, isso não significa que você não pode fazê-lo. Requer cautela. **Você pode modificar com segurança partes do DOM que o React _não tem motivos_ para atualizar.** Por exemplo, se algum `
` estiver sempre vazio no JSX, o React não terá motivos para tocar em sua lista de filhos. Portanto, é seguro adicionar ou remover elementos manualmente lá. -- Refs are a generic concept, but most often you'll use them to hold DOM elements. -- You instruct React to put a DOM node into `myRef.current` by passing `
`. -- Usually, you will use refs for non-destructive actions like focusing, scrolling, or measuring DOM elements. -- A component doesn't expose its DOM nodes by default. You can opt into exposing a DOM node by using the `ref` prop. -- Avoid changing DOM nodes managed by React. -- If you do modify DOM nodes managed by React, modify parts that React has no reason to update. +- Refs são um conceito genérico, mas na maioria das vezes você os usará para conter elementos DOM. +- Você instrui o React a colocar um nó DOM em `myRef.current` passando `
`. +- Normalmente, você usará refs para ações não destrutivas, como focar, rolar ou medir elementos DOM. +- Um componente não expõe seus nós DOM por padrão. Você pode optar por expor um nó DOM usando a prop `ref`. +- Evite alterar os nós DOM gerenciados pelo React. +- Se você modificar os nós DOM gerenciados pelo React, modifique as partes que o React não tem motivos para atualizar. - - -#### Play and pause the video {/*play-and-pause-the-video*/} +#### Reproduzir e pausar o vídeo {/*play-and-pause-the-video*/} -In this example, the button toggles a state variable to switch between a playing and a paused state. However, in order to actually play or pause the video, toggling state is not enough. You also need to call [`play()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/play) and [`pause()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/pause) on the DOM element for the `
- - ); -} - -const catCount = 10; -const catList = new Array(catCount); -for (let i = 0; i < catCount; i++) { - const bucket = Math.floor(Math.random() * catCount) % 2; - let imageUrl = ''; - switch (bucket) { - case 0: { - imageUrl = "https://placecats.com/neo/250/200"; - break; - } - case 1: { - imageUrl = "https://placecats.com/millie/250/200"; - break; - } - case 2: - default: { - imageUrl = "https://placecats.com/bella/250/200"; - break; - } - } - catList[i] = { - id: i, - imageUrl, - }; -} - -``` - -```css -div { - width: 100%; - overflow: hidden; -} - -nav { - text-align: center; -} - -button { - margin: .25rem; -} - -ul, -li { - list-style: none; - white-space: nowrap; -} - -li { - display: inline; - padding: 0.5rem; -} - -img { - padding: 10px; - margin: -10px; - transition: background 0.2s linear; -} - -.active { - background: rgba(0, 100, 150, 0.4); -} -``` - - - - - -#### Focus the search field with separate components {/*focus-the-search-field-with-separate-components*/} - -Make it so that clicking the "Search" button puts focus into the field. Note that each component is defined in a separate file and shouldn't be moved out of it. How do you connect them together? - - - -You'll need to pass `ref` as a prop to opt into exposing a DOM node from your own component like `SearchInput`. - - - - - -```js src/App.js -import SearchButton from './SearchButton.js'; -import SearchInput from './SearchInput.js'; - -export default function Page() { - return ( - <> - - - - ); -} -``` - -```js src/SearchButton.js -export default function SearchButton() { - return ( - - ); -} -``` - -```js src/SearchInput.js -export default function SearchInput() { - return ( - - ); -} -``` - -```css -button { display: block; margin-bottom: 10px; } -``` - - - - - -You'll need to add an `onClick` prop to the `SearchButton`, and make the `SearchButton` pass it down to the browser ` - ); -} -``` - -```js src/SearchInput.js -export default function SearchInput({ ref }) { - return ( - - ); -} -``` - -```css -button { display: block; margin-bottom: 10px; } -``` - - - - - - + Date: Mon, 18 May 2026 14:16:14 +0000 Subject: [PATCH 2/4] =?UTF-8?q?docs:=20translate=20`manipulating-the-dom-w?= =?UTF-8?q?ith-refs.md`=20to=20Portugu=C3=AAs=20(Brasil)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../learn/manipulating-the-dom-with-refs.md | 320 ++++++++++++++---- 1 file changed, 251 insertions(+), 69 deletions(-) diff --git a/src/content/learn/manipulating-the-dom-with-refs.md b/src/content/learn/manipulating-the-dom-with-refs.md index de053886d..6c5f87823 100644 --- a/src/content/learn/manipulating-the-dom-with-refs.md +++ b/src/content/learn/manipulating-the-dom-with-refs.md @@ -1,23 +1,22 @@ --- title: 'Manipulando o DOM com Refs' --- -```html -o React atualiza automaticamente o [DOM](https://developer.mozilla.org/pt-BR/docs/Web/API/Document_Object_Model/Introduction) para corresponder à sua saída de renderização, então seus componentes geralmente não precisarão manipulá-lo. No entanto, às vezes você pode precisar acessar os elementos DOM gerenciados pelo React - por exemplo, para focar um nó, rolar até ele ou medir seu tamanho e posição. Não há uma maneira integrada de fazer essas coisas no React, então você precisará de um *ref* para o nó DOM. +O React atualiza automaticamente o [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction) para corresponder à saída do seu render, então seus componentes não precisarão manipulá-lo com frequência. No entanto, às vezes você pode precisar acessar os elementos DOM gerenciados pelo React – por exemplo, para focar um nó, rolar até ele ou medir seu tamanho e posição. Não há uma maneira integrada de fazer essas coisas no React, então você precisará de uma *ref* para o nó DOM. - Como acessar um nó DOM gerenciado pelo React com o atributo `ref` -- Como o atributo `ref` JSX se relaciona com o Hook `useRef` +- Como o atributo JSX `ref` se relaciona com o Hook `useRef` - Como acessar o nó DOM de outro componente - Em quais casos é seguro modificar o DOM gerenciado pelo React -## Obtendo um ref para o nó {/*getting-a-ref-to-the-node*/} +## Obtendo uma ref para o nó {/*getting-a-ref-to-the-node*/} Para acessar um nó DOM gerenciado pelo React, primeiro, importe o Hook `useRef`: @@ -25,28 +24,28 @@ Para acessar um nó DOM gerenciado pelo React, primeiro, importe o Hook `useRef` import { useRef } from 'react'; ``` -Em seguida, use-o para declarar um ref dentro do seu componente: +Em seguida, use-o para declarar uma ref dentro do seu componente: ```js const myRef = useRef(null); ``` -Finalmente, passe seu ref como o atributo `ref` para a tag JSX para a qual você deseja obter o nó DOM: +Finalmente, passe sua ref como o atributo `ref` para a tag JSX para a qual você deseja obter o nó DOM: ```js
``` -O Hook `useRef` retorna um objeto com uma única propriedade chamada `current`. Inicialmente, `myRef.current` será `null`. Quando o React cria um nó DOM para este `
`, o React colocará uma referência a este nó em `myRef.current`. Você pode então acessar este nó DOM de seus [manipuladores de eventos](/learn/responding-to-events) e usar as [APIs do navegador](https://developer.mozilla.org/pt-BR/docs/Web/API/Element) integradas definidas nele. +O Hook `useRef` retorna um objeto com uma única propriedade chamada `current`. Inicialmente, `myRef.current` será `null`. Quando o React criar um nó DOM para este `
`, o React colocará uma referência a este nó em `myRef.current`. Você pode então acessar este nó DOM de seus [manipuladores de eventos](/learn/responding-to-events) e usar as [APIs do navegador](https://developer.mozilla.org/docs/Web/API/Element) integradas definidas nele. ```js -// Você pode usar qualquer API do navegador, por exemplo: +// Você pode usar quaisquer APIs do navegador, por exemplo: myRef.current.scrollIntoView(); ``` -### Exemplo: Focando uma entrada de texto {/*example-focusing-a-text-input*/} +### Exemplo: Focando um campo de texto {/*example-focusing-a-text-input*/} -Neste exemplo, clicar no botão focará a entrada: +Neste exemplo, clicar no botão focará no campo de entrada: @@ -77,14 +76,14 @@ Para implementar isso: 1. Declare `inputRef` com o Hook `useRef`. 2. Passe-o como ``. Isso diz ao React para **colocar o nó DOM deste `` em `inputRef.current`.** -3. Na função `handleClick`, leia o nó DOM de entrada de `inputRef.current` e chame [`focus()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) nele com `inputRef.current.focus()`. +3. Na função `handleClick`, leia o nó DOM do campo de entrada de `inputRef.current` e chame [`focus()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) nele com `inputRef.current.focus()`. 4. Passe o manipulador de eventos `handleClick` para ` - {show &&

Olá mundo

} + {show &&

Hello world

}
); } @@ -647,28 +646,30 @@ button { -Depois de remover manualmente o elemento DOM, tentar usar `setState` para mostrá-lo novamente levará a uma falha. Isso ocorre porque você alterou o DOM e o React não sabe como continuar gerenciando-o corretamente. +Depois de remover manualmente o elemento DOM, tentar usar `setState` para mostrá-lo novamente levará a um erro. Isso ocorre porque você alterou o DOM, e o React não sabe como continuar gerenciando-o corretamente. -**Evite alterar os nós DOM gerenciados pelo React.** Modificar, adicionar filhos ou remover filhos de elementos que são gerenciados pelo React pode levar a resultados visuais inconsistentes ou falhas como acima. +**Evite alterar nós DOM gerenciados pelo React.** Modificar, adicionar filhos ou remover filhos de elementos que são gerenciados pelo React pode levar a resultados visuais inconsistentes ou erros como o acima. -No entanto, isso não significa que você não pode fazê-lo. Requer cautela. **Você pode modificar com segurança partes do DOM que o React _não tem motivos_ para atualizar.** Por exemplo, se algum `
` estiver sempre vazio no JSX, o React não terá motivos para tocar em sua lista de filhos. Portanto, é seguro adicionar ou remover elementos manualmente lá. +No entanto, isso não significa que você não possa fazer isso. Requer cautela. **Você pode modificar com segurança partes do DOM que o React _não tem motivo_ para atualizar.** Por exemplo, se um `
` estiver sempre vazio no JSX, o React não terá motivo para tocar em sua lista de filhos. Portanto, é seguro adicionar ou remover elementos manualmente lá. -- Refs são um conceito genérico, mas na maioria das vezes você os usará para conter elementos DOM. +- Refs são um conceito genérico, mas na maioria das vezes você as usará para manter elementos DOM. - Você instrui o React a colocar um nó DOM em `myRef.current` passando `
`. -- Normalmente, você usará refs para ações não destrutivas, como focar, rolar ou medir elementos DOM. +- Geralmente, você usará refs para ações não destrutivas como focar, rolar ou medir elementos DOM. - Um componente não expõe seus nós DOM por padrão. Você pode optar por expor um nó DOM usando a prop `ref`. -- Evite alterar os nós DOM gerenciados pelo React. -- Se você modificar os nós DOM gerenciados pelo React, modifique as partes que o React não tem motivos para atualizar. +- Evite alterar nós DOM gerenciados pelo React. +- Se você modificar nós DOM gerenciados pelo React, modifique partes que o React não tem motivo para atualizar. + + #### Reproduzir e pausar o vídeo {/*play-and-pause-the-video*/} -Neste exemplo, o botão alterna uma variável de estado para alternar entre um estado de reprodução e um estado de pausa. No entanto, para realmente reproduzir ou pausar o vídeo, alternar o estado não é suficiente. Você também precisa chamar [`play()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/play) e [`pause()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/pause) no elemento DOM para o `
- + ); +} + +const catCount = 10; +const catList = new Array(catCount); +for (let i = 0; i < catCount; i++) { + const bucket = Math.floor(Math.random() * catCount) % 2; + let imageUrl = ''; + switch (bucket) { + case 0: { + imageUrl = "https://placecats.com/neo/250/200"; + break; + } + case 1: { + imageUrl = "https://placecats.com/millie/250/200"; + break; + } + case 2: + default: { + imageUrl = "https://placecats.com/bella/250/200"; + break; + } + } + catList[i] = { + id: i, + imageUrl, + }; +} + +``` + +```css +div { + width: 100%; + overflow: hidden; +} + +nav { + text-align: center; +} + +button { + margin: .25rem; +} + +ul, +li { + list-style: none; + white-space: nowrap; +} + +li { + display: inline; + padding: 0.5rem; +} + +img { + padding: 10px; + margin: -10px; + transition: background 0.2s linear; +} + +.active { + background: rgba(0, 100, 150, 0.4); +} +``` + + + + + +#### Focar no campo de busca com componentes separados {/*focus-the-search-field-with-separate-components*/} + +Faça com que clicar no botão "Search" coloque o foco no campo. Observe que cada componente é definido em um arquivo separado e não deve ser movido dele. Como você os conecta? + + + +Você precisará passar `ref` como uma prop para optar por expor um nó DOM do seu próprio componente como `SearchInput`. + + + + + +```js src/App.js +import SearchButton from './SearchButton.js'; +import SearchInput from './SearchInput.js'; + +export default function Page() { + return ( + <> + + + + ); +} +``` + +```js src/SearchButton.js +export default function SearchButton() { + return ( + + ); +} +``` + +```js src/SearchInput.js +export default function SearchInput() { + return ( + + ); +} +``` + +```css +button { display: block; margin-bottom: 10px; } +``` + + + + + +Você precisará adicionar uma prop `onClick` ao `SearchButton` e fazer com que o `SearchButton` a passe para o ` + ); +} +``` + +```js src/SearchInput.js +export default function SearchInput({ ref }) { + return ( + + ); +} +``` + +```css +button { display: block; margin-bottom: 10px; } +``` + + + + + + \ No newline at end of file From 55eb262a6ae8a01e11005515a6ce8ba6dc201203 Mon Sep 17 00:00:00 2001 From: "translate-react-bot[bot]" <251169733+translate-react-bot[bot]@users.noreply.github.com> Date: Mon, 18 May 2026 15:56:58 +0000 Subject: [PATCH 3/4] =?UTF-8?q?docs:=20translate=20`manipulating-the-dom-w?= =?UTF-8?q?ith-refs.md`=20to=20Portugu=C3=AAs=20(Brasil)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../learn/manipulating-the-dom-with-refs.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/content/learn/manipulating-the-dom-with-refs.md b/src/content/learn/manipulating-the-dom-with-refs.md index 6c5f87823..71ce2b401 100644 --- a/src/content/learn/manipulating-the-dom-with-refs.md +++ b/src/content/learn/manipulating-the-dom-with-refs.md @@ -3,7 +3,7 @@ title: 'Manipulando o DOM com Refs' --- -O React atualiza automaticamente o [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction) para corresponder à saída do seu render, então seus componentes não precisarão manipulá-lo com frequência. No entanto, às vezes você pode precisar acessar os elementos DOM gerenciados pelo React – por exemplo, para focar um nó, rolar até ele ou medir seu tamanho e posição. Não há uma maneira integrada de fazer essas coisas no React, então você precisará de uma *ref* para o nó DOM. +O React atualiza automaticamente o [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction) para corresponder à saída do seu render, então seus componentes não precisarão manipulá-lo com frequência. No entanto, às vezes você pode precisar acessar os elementos DOM gerenciados pelo React — por exemplo, para focar um nó, rolar até ele ou medir seu tamanho e posição. Não há uma maneira integrada de fazer essas coisas no React, então você precisará de uma *ref* para o nó DOM. @@ -36,7 +36,7 @@ Finalmente, passe sua ref como o atributo `ref` para a tag JSX para a qual você
``` -O Hook `useRef` retorna um objeto com uma única propriedade chamada `current`. Inicialmente, `myRef.current` será `null`. Quando o React criar um nó DOM para este `
`, o React colocará uma referência a este nó em `myRef.current`. Você pode então acessar este nó DOM de seus [manipuladores de eventos](/learn/responding-to-events) e usar as [APIs do navegador](https://developer.mozilla.org/docs/Web/API/Element) integradas definidas nele. +O Hook `useRef` retorna um objeto com uma única propriedade chamada `current`. Inicialmente, `myRef.current` será `null`. Quando o React criar um nó DOM para este `
`, o React colocará uma referência a este nó em `myRef.current`. Você pode então acessar este nó DOM a partir dos seus [manipuladores de eventos](/learn/responding-to-events) e usar as [APIs do navegador](https://developer.mozilla.org/docs/Web/API/Element) integradas definidas nele. ```js // Você pode usar quaisquer APIs do navegador, por exemplo: @@ -76,10 +76,10 @@ Para implementar isso: 1. Declare `inputRef` com o Hook `useRef`. 2. Passe-o como ``. Isso diz ao React para **colocar o nó DOM deste `` em `inputRef.current`.** -3. Na função `handleClick`, leia o nó DOM do campo de entrada de `inputRef.current` e chame [`focus()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) nele com `inputRef.current.focus()`. +3. Na função `handleClick`, leia o nó DOM do input a partir de `inputRef.current` e chame [`focus()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) nele com `inputRef.current.focus()`. 4. Passe o manipulador de eventos `handleClick` para `