Me gustaría usar condensador/aplicación para obtener el estado (en segundo plano o activo) de mi aplicación en iOS. Mi proyecto está basado en Clojurescript por lo que es necesario traducir el siguiente código javascript a clojurescript uno.
import { App } from '@capacitor/app'; App.addListener('appStateChange', ({ isActive }) => { console.log('App state changed. Is active?', isActive); }); (ns js.sample (:require ["@capacitor/app" :refer [App]])) (.addListener App "appStateChange" #((fn [isActive] (js/console.log isActive)))) Supongo que obtendría isActive como true o false , pero constantemente obtengo un resultado undefined . ¿Qué está mal con mi código? Agradezco cualquier ayuda.
(.addListener App "appStateChange" (fn [^js event] (js/console.log (.-isActive event)))) Como menciona el comentario de cfrick, #(...) no es necesario allí. #(...) es básicamente una abreviatura de (fn [...] ...) , y ya tiene una función allí.
En JS, {isActive} en la firma de una función significa que isActive se asignará al valor del campo isActive del objeto que se pasó a la función.
^js en CLJS marca el nombre que le sigue como uno que contiene un objeto JS. Es necesario asegurarse de que cosas como isActive no terminen siendo renombradas por el compilador durante las optimizaciones de compilación de producción. No debería ser necesario en este caso porque el nombre isActive no es algo que usted o alguna biblioteca hayan inventado, sino un nombre que proviene de la API de JS. Pero todavía encuentro que es una buena práctica delinear tales cosas. (Sin embargo, ^js no debe usarse con importaciones de goog ).