问题标签 [om]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojurescript - ClojureScript:如何访问 Om 游标中的对象
我只是在尝试 Om,从基础教程中学习。
我的程序数据在一个原子中:app-state。
如果我将一个序列放入该原子中,例如。
然后稍后,在我的渲染中,我可以得到一个光标
并映射它:
但是,如果我有一个可以返回序列的方法的 defrecord:
并将其放入应用程序状态
...
我不能这样做:
它只是抛出一个错误,说游标没有方法 .getSeq
那讲得通。但是,我怎样才能真正获得光标内的 ThingCollection 对象呢?我找不到任何这样的例子。我尝试过的任何东西似乎都没有给我。
jquery - 如何使用 Om/Clojurescript(来自 jQuery)在 React 中实现基本动画?
我正在使用 Om/Clojurescript 深入研究 React,迄今为止我的所有前端工作都使用 jQuery,我在理解如何在 jQuery 中实现简单而常见的任务方面遇到了主要障碍。
举一个非常简单的例子,一个切换菜单的按钮:
据我了解,我无法在 React 中实现这个简单的 jQuery 功能,因为它在 React 之外进行 DOM 操作,这可能会导致问题,对吗?
因此,据我所知,我已经完成了一些我认为不是最佳解决方案的事情:
在哪里,单击 时#menu-trigger
,它会切换其:open
状态。我现在很困惑如何切换 的.active
类ul#menu
,或者其他组件如何响应此操作。(类似于$('.menu-can-toggle')
jQuery 中的选择器。
我相信这只是让我了解一个新的范例或方法来完成这样的任务,但是我发现的所有东西对于React CSSTransitionGroup等似乎都非常复杂,我只是想知道是否有一种标准的方法来实现简单与上面的(基本上是单行的) jQuery类似的任务。
clojure - 设置组件数据中缺少键的初始状态
我正在尝试进入 ClojureScript 和 Om。有一个特定的案例让我在圈子里跑来跑去。
我有一个在没有密钥的情况下首次呈现的组件。
第一次调用此组件时,:stats
密钥根本不存在于data
. 这就是为什么我调用 API 来获取它的统计信息。但是 React 仍然调用该render
函数,因此组件崩溃了。
如何在此组件中设置初始状态,以提供data
名为 的空地图:stats
,从而防止尝试nil
在(om/build model-stats-view)
调用中呈现?
clojure - Query Composition With Unions 如何与通过 Om Next 中的 props 传递的父子树一起工作
我有两个组件 A 和 B。我想在页面上的这两个组件之间切换。
一种解决方案是使用父组件 C:
问题是查询。C 需要同时查询 A 和 B,即使其中一个被显示。
我需要 C 要么不参与查询,要么只查询 A 或 B。
这些是真的,还是有解决方法:
- 子组件只能查询其父组件传递的 props。
- 父组件必须查询其子组件,以便将它们传递给子组件。
- 只有根组件查询
app-state
.
unit-testing - 通过模拟请求使用异步 api 调用测试组件
我仍处于 Cljs 和 Om 的学习阶段。我正在研究编写组件测试。一些组件cljs-http
调用了我创建的 API。在测试时,我不希望这些 API 调用实际发送请求,所以我正在研究模拟请求并返回一个夹具。这是我拥有的示例组件:
请不要介意代码实际上在语法上是否正确,我只是在展示它的要点。
我现在要做的是测试这个async-component
和 API 调用,看看它是否会呈现我用来模拟请求的夹具。这是怎么做到的?我知道cljs.test
有async
测试异步代码的块,但所有示例都显示它测试只有 ago
的实际代码块,而不是在更大的上下文中。
clojure - 如何在 clojure 中访问 core.cljs 中的 db.clj 方法
我正在尝试在clojure
. 我已经使用clojurescript om
并做出了反应。有两个文件core.cljs
和db.clj
.
core.cljs
包含 ui forlogin page
并db.clj
包含所有database connections
.
现在我正在尝试db.clj
在 core.cljs 中调用方法 add-user[username password]。
在db.clj
在core.cljs
但我无法在core.cljs
. 它显示了一些错误消息,例如
clojurescript - ClojureScript、Om 和 Om-Bootstrap:单击按钮,使输入可编辑
我正在创建一个页面,该页面使用 om-boostrap 显示并编辑租户信息。(我知道 Clojure,但对 CLJS/Om/React/现代 Web 开发一般来说是新手。)显示和编辑租户信息之间的 UI 和功能是相似的——两者都可以使用输入字段;编辑只需要字段是“文本”而不是“静态”,并且需要“提交”和“取消”按钮。
我面临的问题是我无法弄清楚 React/Om 的方式来改变这样的组件。视图定义如下:
我不会在tenant-view
这里粘贴整个函数,但它使用 om-bootstrap 为每个租户数据字段构建 Bootstrap 输入:
我尝试了多种方法。我发布了我最近的一次,使用按钮的:on-click
功能来修改应用程序状态,将edit?
属性设置为true
并提示重新渲染以使输入可编辑。
这不起作用,我在 React 或 Om 文档中找不到指导。
- 以不同方式呈现相同组件的正确方法是什么?(在我的例子中,
view
函数的输入字段。) - 什么 React 或 Om 文档是相关的?
更新:当我将edit?
标志硬编码为 时,我可以使输入可编辑true
,因此使输入可编辑不是问题:问题是从static
to切换text
(反之亦然)。
error-handling - Clojurescript/试剂处理错误
我们开始在产品的下一个开发阶段使用 Clojuescript/Reagent。基本上我们需要一种方法,对原子进行单个操作,我们想出了一个方法,例如: (def app-state (r/atom {}))
基本上,交换获得了一个功能,其中所有需要的操作都被链接起来。这是辉煌的。但是,我正在寻找处理错误的方法。我想有一个单独的原子来处理错误:
当错误发生时,捕获它并将其添加到错误中,而不需要交换应用程序状态(应用程序保持在最后一个稳定状态)。所以我们使用 throw from the chain 和 try cactch
所以我希望错误被捕获,并且@errors 有它。但现实是:
*未捕获有错误
weather_app$core$change_title @ core.cljs?rel=1450266738018:59(匿名函数)@core.cljs?rel=1450266738018:108executeDispatch @ react-with-addons.inc.js:3311SimpleEventPlugin.executeDispatch @ react-with-addons。 inc.js:17428forEachEventDispatch @ react-with-addons.inc.js:3299executeDispatchesInOrder @ react-with-addons.inc.js:3320executeDispatchesAndRelease @ react-with-addons.inc.js:2693forEachAccumulated @ react-with-addons.inc。 js:19430EventPluginHub.processEventQueue@react-with-addons.inc.js:2900runEventQueueInBatch@react-with-addons.inc.js:11217ReactEventEmitterMixin.handleTopLevel@react-with-addons.inc.js:11243handleTopLevelImpl@react-with-addons。 inc.js:11329Mixin.perform @ react-with-addons.inc.js:18402ReactDefaultBatchingStrategy.batchedUpdates @ react-with-addons.inc.js:9669batchedUpdates @ react-with-addons.inc.js:16633ReactEventListener.dispatchEvent@react-with-addons.inc.js:11423*
clojurescript - 无法读取未定义 om alpha26 的属性“force_children”
在我决定升级到 om-alpha26 之前,我的应用程序运行正常。现在我得到:无法读取未定义的属性“force_children”
我试过删除我的目标文件夹并执行“lein clean”无济于事。
google 上没有任何内容,除了更新我的 project.clj 中的 om 版本之外,我没有进行其他代码更改。我使用栗子作为我的开发环境。
这是我的project.clj:
更新:
'force_children' 函数不是我定义的函数。在堆栈跟踪之后,它看起来像是在(om.dom/div ....children)上被调用。当我从代码编译的表达式中删除子节点时,代码如下:
我怀疑这与栗子有关,因为当我将代码上传到 heroku 时不会发生错误。这是堆栈跟踪:
谢谢!