Saltearse al contenido

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 alternatively
mount(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.