También se recomienda usar el almacenamiento de sesión para esto. ¿Qué pasa con Redux? Bueno, no sé cuántos de ustedes todavía están usando Redux, pero probablemente muchos de ustedes lo estén, y estén familiarizados con él. Redux no es realmente posible en la configuración aislada de las extensiones web. Hay un plugin, una biblioteca WebExt Redux, que almacena los datos en el almacenamiento, pero está usando algunos proxies y mensajes para, básicamente, cada vez que hay, como, una acción de Redux, lo almacena en un almacenamiento, de la misma manera que estamos enviando mensajes con datos. Pero no es realmente recomendable. Funciona, pero a veces la serialización rompe las referencias de los objetos. Viene con muchos problemas de rendimiento. Es bastante difícil de depurar. Las herramientas de desarrollo de Redux no funcionan tan bien con esta biblioteca, y es mejor usar el almacenamiento. Como, si estás diseñando una nueva extensión web, solo sé considerado al respecto.
Si estás usando el almacenamiento, puedes acceder a los valores desde cada parte de la extensión web. El desafío número cuatro es algo con lo que me he encontrado muchas veces porque no fui lo suficientemente considerado, pero ahora lo soy. Colisión de CSS. Digamos que estás inyectando un pequeño widget en la pestaña abierta. Mencioné Grammarly, por ejemplo, pero sabes que muchos gestores de contraseñas también muestran pequeños widgets en las páginas, y tienes un diseño muy bonito para ello, pero el sitio web subyacente tiene su propia forma de, digamos, estilizar un botón. A veces, ya sabes, tienen estilos importantes, y realmente no puedes sobrescribir esos con tus propios estilos personalizados. Entonces, ¿cuál es la solución?
Bueno, también puedes poner importante a todos tus estilos y luego tener una hoja de estilos muy fea, pero hay una solución mucho mejor, que es usar el Shadow DOM y componentes web personalizados para envolver tu paquete de React. Esto viene gratis en el marco WXT. Aquí hay un ejemplo de cómo puedes hacer eso. Básicamente estás usando la interfaz CreateShadowRoot, y donde se está renderizando, simplemente lo renderizas dentro de eso. Esto viene con un aislamiento, por lo que todos los estilos que están fuera de tu componente, de tu componente web, no serán heredados por el componente web, así que estás comenzando desde cero, lo cual es realmente, realmente útil en la mayoría de los casos. A veces, por supuesto, no quieres eso, pero creo que en el 99% de los casos, quieres que tus estilos estén aislados de la página web subyacente si estás inyectando en ella.
Comments