首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClojureScript:如何使用Reagent反应性地更改CodeMirror

ClojureScript:如何使用Reagent反应性地更改CodeMirror
EN

Stack Overflow用户
提问于 2016-07-07 21:19:03
回答 1查看 778关注 0票数 3

我正在尝试在我的网页中嵌入一个CodeMirror来编辑几个代码片段,一次一个。

为了做到这一点,我:

  • 让一个Reagent原子node-defs-atom包含代码片段的映射。
  • 有另一个原子node-history-atom,它包含正在查看的片段的键。
  • 将CodeMirror的值设置为键处代码映射的值。

以下是不起作用的地方:

代码语言:javascript
复制
(defn editor [node-defs-atom node-history-atom]
  (reagent/create-class
    {:reagent-render (fn [] (do [:textarea
                     { :value (@node-defs-atom (last @node-history-atom))
                       :auto-complete "off"}]))
     :component-did-mount (editor-did-mount  node-defs-atom node-history-atom)
     }))

(defn editor-did-mount [node-defs-atom node-history-atom]
  (fn [this]
    (let [codemirror (.fromTextArea  js/CodeMirror
                                     (reagent/dom-node this)
                                     #js {:mode "clojure"
                                          :lineNumbers true})]

                            ...... )))

node-history-atom更改reset!不会对CodeMirror中的文本产生任何影响。我真的不知道到底出了什么问题。

如果有人能告诉我,我应该把(@node-defs-atom (last @node-history-atom))的参考资料放在哪里,我将非常感激。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-08 10:32:48

您可以尝试另一种方法来处理CodeMirror编辑器

  • 在空节点上创建CM实例 (原子零))(重置!)厘米(js/CodeMirror )(.createElement js/document "div") (clj->js {.})
  • 然后您的视图将是一个试剂类,而wrapper-id只是父类的id。 (试剂/创建-类{:试剂-呈现(fn [] @cm :div {:id包装-id}) :component-did- update -comp :component装入update-comp})
  • 创建一个将CM附加到dom节点的函数 (defn更新-comp this )
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38255446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档