Clojurescript生产构建元素重命名吗?

问题描述

我决定在快速的实验环境中实现一个小的“隐藏域命令模式”。

要说明:我正在提交一个表单,并在试剂中将其定义为[:input {:type "hidden" :name "command" :value @command}]并具有一个隐藏字段。这样做的一个好处是,我可以使用一条路由来响应一堆命令,只需在处理程序中对该form字段的值使用case语句即可,就像原始的graphql一样。

然后按下各种按钮的点击事件

(fn [e] (.preventDefault e)
    (reset! command "some-command-name-here")
    (js/setTimeout (fn [] (. js/document (theForm.submit))) 100))

(相关联的打cup中有一个[:form ...],带有一个属性:name="theForm",此代码打算引用此{}}。

当然,这还不理想。

基本要点:这是使用r/atom来更新DOM中隐藏字段的值,然后立即提交该字段,因此(这很糟糕!-仅适用于快速破解 )最初需要进行超时才能进行此工作(否则提交会在react有时间进行反应之前发生)。我确实打算研究直接更新dom(即以阻塞方式同步更新),以便消除超时。

但是我有一个更基本的问题:这适用于开发版本,但是在clojurescript生产版本中却出现错误

Uncaught TypeError: Cannot read property 'submit' of undefined at main-prod.js:650

这似乎是由于在生产版本中重命名了表单的名称,因此上面的回调中的“ theForm”没有与在我的源码中称为“ theForm”的dom节点连接。我尝试了源代码中的“表单”,但这也不起作用。

我需要了解的生产版本中是否有一些重命名?我也尝试过:pseudo-names true and :pretty-print true,但问题相同。也刚尝试过stable names,但存在相同的问题。


以下内容适用于高级编译,但我仍在找出原因

(. (js/document.getElementById "the-form") submit) ; id="the-form" in hiccup

可以

这不是:

(. js/document (the-form.submit)  ; name="the-form" in hiccup

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...