¿Existe una forma eficiente de formatear grandes cantidades de cadenas de javascript inyectadas y retener la finalización de tipo + funcionalidad comprobable para react-native-webview?
Para react-native, la biblioteca react-native-webview permite la comunicación a través de un WebView nativo y react-native. Esto requiere la inyección de javascript en formato de cadena para personalizar lo que se comunica y cómo se procesan las interacciones del usuario.
Esta inyección puede volverse desordenada, ilegible o tener pequeños errores que son difíciles de probar cuando se necesita combinar un montón de funcionalidades.
¿Alguien tiene una mejor solución escalable para esto?
Mis requisitos para injectableStrings (que afectan el DOM de Webview)
Los documentos de react-native-webview brindan referencias simplificadas a javascript en formato de cadena que no tienen sintaxis ni terminaciones de tipo.
Enfoque actual y respuesta
Ejemplo
Navegador.inyectableJavascript.ts
const registerPressHandler = () => { const imgNodes = document.getElementsByTagName('img') const linkNodes = document.getElementsByTagName('a') // add callbacks etc... } // re-registers events whenever the document re-renders nodes... const createObservers = () => { const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { // handle cases here...and rebind events to new nodes registerPressHandler() }) }) observer.observe(document.body, { childList: true, subtree: true, }) } export const browserInjection = ` ${registerPressHandler.toString()}; // initialize web click handler registerPressHandler() ${createObservers.toString()}; createObservers(); `Navegador.tsx
import React from 'react' import Webview from 'react-native-webview' import { browserInjection } from './Browser.injections' const Browser = () => { return <Webview injectedJavascript={browserInjection} /> } export default BrowserOtras ideas: