# React Native
## Requisitos previos
Para poder usar el hosted widget en tu aplicación React Native, asegúrate de que:
- Puedes crear tokens de `access` en tu servidor.
- Sabes cómo implementar webviews para tu plataforma. Para más información, consulta los artículos sobre webview en la página de github de React Native.
## Manejar eventos en tu webview
En el ejemplo de código a continuación, puedes ver un ejemplo de cómo escuchar y manejar eventos dentro de tu webview.
```javascript Webview Handling Example
import React, {useState, useEffect} from 'react';
import {WebView} from 'react-native-webview';
import {URL} from 'react-native-url-polyfill';
export default function BelvoWidget({token, payload}) {
const [belvoURI, setBelvoURI] = useState('');
let belvoWidgetURL = `https://widget.belvo.io/?access_token=${token}`;
useEffect(() => {
setBelvoURI(`${belvoWidgetURL}&${buildPayload(payload)}`);
}, [belvoWidgetURL, payload]);
const buildPayload = rawPayload => {
return Object.keys(rawPayload)
.map(key => key + '=' + rawPayload[key])
.join('&');
};
const handleBelvoEvent = event => {
console.log({event});
const webviewEvent = new URL(event.url);
if (webviewEvent.protocol === 'your-url-here:') {
const parseParams = Object.fromEntries(webviewEvent.searchParams);
switch (webviewEvent.hostname) {
case 'success':
const {link, institution} = parseParams;
// Haz algo con el link y la institución.
return false;
case 'exit':
// Si el redireccionamiento comienza con "exit",
// Haz algo con los datos.
return false;
case 'error':
const {error, error_message} = parseParams;
// Si el redireccionamiento comienza con "error",
// Haz algo con los datos del error.
return false;
}
return false;
}
return true;
};
// Inserta código para escuchar eventos adicionales aquí
return (
);
```
## Escuchando eventos adicionales
Nuestro widget para webviews también envía datos adicionales sobre los eventos que el usuario encuentra a lo largo del widget. Por ejemplo, cuando el usuario pasa de la pantalla de selección de institución a la pantalla de inicio de sesión de credenciales, nuestro widget enviará un evento.
Los eventos se envían como cargas JSON con el siguiente esquema:
Evento de Carga de Página
```json PAGE_LOAD Event
{
"eventName": "PAGE_LOAD",
"metadata":{
"page": "/institutions", // Página a la que se dirige el usuario
"from": "/consent", // Página donde estaba el usuario anteriormente
"institution_name": "", // Nota: Este campo solo aparece DESPUÉS de que hayan seleccionado una institución
}
}
```
Evento de Error
```json ERROR Event
{
"eventName": "ERROR",
"request_id": "UUID",
"meta_data": {
"error_code": "login_error",
"error_message": "Invalid credentials provided to login to the institution",
"institution_name": "bancoazteca_mx_retail",
"timestamp": "2020-04-27T19:09:23.918Z"
}
}
```
Para escuchar estos eventos, solo agrega el siguiente código a tu aplicación:
```js
{
// do something with event.nativeEvent.data
}}
/>
```
¡Listo! ¡Ahora puedes escuchar eventos adicionales en tu webview!