mununki
mununki

Reputation: 407

How to call a method of js instance in cljs

I'm very new to the cljs. I'm practicing the cljs with re-frame. I faced an issue to access a method of js instance.

(->> quill-contents
    (.parse js/JSON)
    (.setContents @editor))

If I tried to call .setContents of @editor which is the js instance wrapped with r/atom (actually, it is the Quill editor instance). Actually, this code works fine in dev mode, but it throws an error, such as xi(...).hi is not a function after making a release build.

I guess that .setContents is compiled to .hi in the release build, so it can't find the method from the js instance.

I'm using shadow-cljs to build this re-frame project.

How can I fix this issue?

Upvotes: 0

Views: 524

Answers (1)

Eugene Pakhomov
Eugene Pakhomov

Reputation: 10697

It is due to lacking externs. Add ^js in front of @editor:

(->> quill-contents
    (.parse js/JSON)
    (.setContents ^js @editor))

It will automatically generate an extern for setContents in this case.

Upvotes: 2

Related Questions