如何在cljs中调用js实例的方法
How to call a method of js instance in cljs
我是 cljs 的新手。我正在用 re-frame 练习 cljs。我在访问 js 实例的方法时遇到问题。
(->> quill-contents
(.parse js/JSON)
(.setContents @editor))
如果我尝试调用@editor 的.setContents
,这是用r/atom
包裹的js 实例(实际上,它是Quill 编辑器实例)。实际上,这段代码在开发模式下运行良好,但它会抛出错误,例如在进行发布构建后 xi(...).hi is not a function
。
我猜.setContents
在release build中被编译成.hi
,所以它无法从js实例中找到方法。
我正在使用 shadow-cljs
来构建这个重新构建的项目。
我该如何解决这个问题?
是因为缺少externs。在@editor
前加上^js
:
(->> quill-contents
(.parse js/JSON)
(.setContents ^js @editor))
在这种情况下,它将自动为 setContents
生成一个 extern。
我是 cljs 的新手。我正在用 re-frame 练习 cljs。我在访问 js 实例的方法时遇到问题。
(->> quill-contents
(.parse js/JSON)
(.setContents @editor))
如果我尝试调用@editor 的.setContents
,这是用r/atom
包裹的js 实例(实际上,它是Quill 编辑器实例)。实际上,这段代码在开发模式下运行良好,但它会抛出错误,例如在进行发布构建后 xi(...).hi is not a function
。
我猜.setContents
在release build中被编译成.hi
,所以它无法从js实例中找到方法。
我正在使用 shadow-cljs
来构建这个重新构建的项目。
我该如何解决这个问题?
是因为缺少externs。在@editor
前加上^js
:
(->> quill-contents
(.parse js/JSON)
(.setContents ^js @editor))
在这种情况下,它将自动为 setContents
生成一个 extern。