繁体   English   中英

如何将 javascript 代码转换为 clojurescript?

[英]How can I translate the javascript code to clojurescript?

我想使用电容器/应用程序在 iOS 上获取我的应用程序的 state(背景或活动)。 我的项目是基于 Clojurescript 的,所以需要将下面的 javascript 代码翻译成 clojurescript 一。

  • Javascript
import { App } from '@capacitor/app';

App.addListener('appStateChange', ({ isActive }) => {
  console.log('App state changed. Is active?', isActive);
});
  • 翻译的clojurescript
(ns js.sample
  (:require ["@capacitor/app" :refer [App]]))

(.addListener App "appStateChange"
                  #((fn [isActive]
                      (js/console.log isActive))))

我想我会得到isActivetruefalse ,但我经常得到一个undefined的 output。 我的代码有什么问题? 感谢任何帮助。

(.addListener App "appStateChange"
                  (fn [^js event]
                    (js/console.log (.-isActive event))))

正如cfrick 的评论所提到的,那里不需要#(...) #(...)基本上只是(fn [...]...)的简写,你已经有一个 function 。

在 JS 中,函数签名中的{isActive}意味着isActive将分配给 object 的isActive字段的值,该字段已传递给 function。

CLJS 中的^js将其后面的名称标记为包含 JS object 的名称。 有必要确保像isActive这样的东西不会在生产构建优化期间最终被编译器重命名。 在这种情况下应该没有必要,因为isActive名称不是您或某个库发明的,而是来自 JS API 的名称。 但我仍然认为描述这些事情是一个好习惯。 (但是, ^js不应该与goog导入一起使用。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM