Entorno
Un entorno es un objeto compartido que se proporciona a todos los componentes de un árbol. Owl no lo utiliza, pero resulta útil para que los desarrolladores de aplicaciones proporcionen un canal de comunicación simple entre los componentes (además de las propiedades).
El env
dado a App
se asigna a la propiedad
del componente env
.
Root / \ A B
Además, el objeto env
se congela cuando se inicia la aplicación. Esto se hace para garantizar un modelo mental más simple de lo que sucede en tiempo de ejecución. Tenga en cuenta que solo se congela superficialmente, por lo que los subobjetos se pueden modificar.
Establecer un entorno
La forma correcta de personalizar un entorno es simplemente dárselo a la App
, siempre que se cree.
const env = { _t: myTranslateFunction, user: {...}, services: { ... },};
new App(Root, { env }).mount(document.body);
// or alternativelymount(App, document.body, { env });
Usando un subentorno
A veces resulta útil añadir una (o más) claves específicas al entorno, desde la perspectiva de un componente específico y sus componentes secundarios. En ese caso, la solución presentada anteriormente no funcionará, ya que establece el entorno global.
Hay dos ganchos para esta situación: useSubEnv
y useChildSubEnv
.
class SomeComponent extends Component { setup() { useSubEnv({ myKey: someValue }); // myKey is now available for all child components }}
Contenido de un entorno
El contenido del objeto env
depende totalmente del desarrollador de la aplicación. Sin embargo, algunos buenos casos de uso para claves adicionales en el entorno son:
- Algunas claves de configuración,
- información de la sesión,
- servicios genéricos (como realizar rpc).
- otras funciones de utilidad que se quieran inyectar, como una función de traducción.
Hacerlo de esta manera significa que los componentes son fácilmente probables: podemos simplemente crear un entorno de prueba con servicios simulados.