> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.vturb.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Usando VTurb com React


# Usando VTurb com React

Nesse artigo, vamos aprender a usar VTurb com React em um passo a passo super detalhado.  
  
Segue:  
  
1. Primeiro vamos precisar instalar o react-helmet
  
Rode o seguinte comando na sua aplicação para instalá-lo:  
  
Com yarn:  

```
yarn add react-helmet
```

ou com npm:  

```
npm install --save react-helmet
```

2. Importe o "Helmet" na página em que vai ficar o vídeo da seguinte maneira:
  
```
import { Helmet } from "react-helmet"
```

3. Coloque o vídeo na sua página
  
Para isso, você precisa colar o código abaixo no local em que o vídeo vai ficar e substituir as informações do código abaixo pelas informações do embed JS do seu vídeo.  
  
```
<div dangerouslySetInnerHTML={{ __html: 'HTMLDOSEUVÍDEO' }} />
      <Helmet>
        SCRIPTDOSEUVÍDEO
      </Helmet>
```

Em

`HTMLDOSEUVÍDEO`

coloque essa parte do código do seu vídeo:  
  
![](https://storage.crisp.chat/users/helpdesk/website/470158dc7689fc00/ae6cf84c-e0d0-4a2b-abfd-370e92_2aut4l.png =640xauto) 
  
Em

`SCRIPTDOSEUVÍDEO`

coloque essa parte do código do seu vídeo:  
  
![](https://storage.crisp.chat/users/helpdesk/website/64dade774f338800/27b41358-ccce-4505-a6c8-6d9809_1b7wtvj.png =638xauto) 

**Prontinho! O vídeo já está funcionando na sua aplicação.**

# Teste ab com react

Caso o seu vídeo seja um teste ab vamos precisar mudar algumas coisas, segue:

1. Primero remova o id do script do código do teste ab e cole onde está escrito `ID_DO_SEU_SCRIPT_DE_TESTEAB` e depois cole o script do teste ab sem o id onde está escrito `SCRIPT_DO_SEU_TESTEAB`

```
<div dangerouslySetInnerHTML={{ __html: '<script type="text/javascript" id="ID_DO_SEU_SCRIPT_DE_TESTEAB"></script>' }} />
      <Helmet>
        SCRIPT_DO_SEU_TESTEAB
      </Helmet>
```

2. O seu script deve ficar dessa forma abaixo e já está tudo certo para rodar o seu teste

```
<div dangerouslySetInnerHTML={{ __html: '<script type="text/javascript" id="scr_657afe5a6ab1740009719845"></script>' }} />
      <Helmet>
        <script type="text/javascript">var s=document.createElement("script");s.src="https://scripts.converteai.net/12ad2d53-6275-484d-a818-c6c5c23f6c5f/ab-test/scr_657afe5a6ab1740009719845/player.js",s.async=!0,document.head.appendChild(s);</script>
      </Helmet>
```

# Deixando sua página sincronizada com o vídeo

* Importe o useEffect e o useState

```
import { useState, useEffect } from 'react';
```

* Crie um estado para definir se os elementos estão visíveis ou não:

```
const [isVisible, setIsVisible] = useState(false);
```
  
* Adicione o código de delay abaixo e altere o tempo em segundos em que deseja que o estado `isVisible` fique como `true`:
  
Dessa forma, você pode mostrar os elementos que deseja apenas quando esse estado estiver como

```
true
```

e esconder quando estiver como

```
false
```

.  
  
```
useEffect(() => { /* ALTERE O VALOR 10 PARA OS SEGUNDOS EM QUE AS SEÇÕES VÃO APARECER */ const SECONDS_TO_DISPLAY = 10; /* DAQUI PARA BAIXO NAO PRECISA ALTERAR */ let attempts = 0; let elsDisplayed = false; const alreadyDisplayedKey =`alreadyElsDisplayed${SECONDS_TO_DISPLAY}` const alreadyElsDisplayed = localStorage.getItem(alreadyDisplayedKey); const showHiddenElements = function () { elsDisplayed = true; setIsVisible(true); localStorage.setItem(alreadyDisplayedKey, true) } const startWatchVideoProgress = function () { if (typeof smartplayer === 'undefined' || !(smartplayer.instances && smartplayer.instances.length)) { if (attempts >= 10) return; attempts += 1; return setTimeout(function () { startWatchVideoProgress() }, 1000); } smartplayer.instances[0].on('timeupdate', () => { if (elsDisplayed || smartplayer.instances[0].smartAutoPlay) return; if (smartplayer.instances[0].video.currentTime < SECONDS_TO_DISPLAY) return; showHiddenElements(); }) } if (alreadyElsDisplayed === 'true') { setTimeout(function () { showHiddenElements(); }, 100); } else { startWatchVideoProgress() } }, [])
```

**Prontinho! Os elementos vão ficar sincronizados com o tempo do vídeo em que definiu em segundos.  **
  
Exemplo de condição para aparecer apenas quando chegar no tempo definido:  
  
```
{isVisible && <h1>DELAY TEST</h1>}
```

**Não esqueça de adicionar seu(s) domínio(s) na aba de&#32;[Segurança](https://help.vturb.com/pt-br/article/seguranca-14b0lwn/), garantindo proteção extra aos seus VSLs.**

###### Saiba mais sobre o assunto em:

[Saiba como usar o VTurb com os principais construtores de página!](https://help.vturb.com/pt-br/category/construtores-de-pagina-15iwcsj/)

[Diferença entre o Iframe e o código JS](https://help.vturb.com/pt-br/article/diferenca-entre-o-iframe-e-o-codigo-js-mbliqq/)