问题标签 [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.

0 投票
1 回答
61 浏览

clojurescript - ClojureScript:如何访问 Om 游标中的对象

我只是在尝试 Om,从基础教程中学习。

我的程序数据在一个原子中:app-state。

如果我将一个序列放入该原子中,例如。

然后稍后,在我的渲染中,我可以得到一个光标

并映射它:

但是,如果我有一个可以返回序列的方法的 defrecord:

并将其放入应用程序状态

...

我不能这样做:

它只是抛出一个错误,说游标没有方法 .getSeq

那讲得通。但是,我怎样才能真正获得光标内的 ThingCollection 对象呢?我找不到任何这样的例子。我尝试过的任何东西似乎都没有给我。

0 投票
1 回答
278 浏览

jquery - 如何使用 Om/Clojurescript(来自 jQuery)在 React 中实现基本动画?

我正在使用 Om/Clojurescript 深入研究 React,迄今为止我的所有前端工作都使用 jQuery,我在理解如何在 jQuery 中实现简单而常见的任务方面遇到了主要障碍。

举一个非常简单的例子,一个切换菜单的按钮:

http://jsbin.com/tufisufaha

据我了解,我无法在 React 中实现这个简单的 jQuery 功能,因为它在 React 之外进行 DOM 操作,这可能会导致问题,对吗?

因此,据我所知,我已经完成了一些我认为不是最佳解决方案的事情:

在哪里,单击 时#menu-trigger,它会切换其:open状态。我现在很困惑如何切换 的.activeul#menu,或者其他组件如何响应此操作。(类似于$('.menu-can-toggle')jQuery 中的选择器。

我相信这只是让我了解一个新的范例或方法来完成这样的任务,但是我发现的所有东西对于React CSSTransitionGroup等似乎都非常复杂,我只是想知道是否有一种标准的方法来实现简单与上面的(基本上是单行的) jQuery类似的任务。

0 投票
1 回答
160 浏览

clojure - 设置组件数据中缺少键的初始状态

我正在尝试进入 ClojureScript 和 Om。有一个特定的案例让我在圈子里跑来跑去。

我有一个在没有密钥的情况下首次呈现的组件。

第一次调用此组件时,:stats密钥根本不存在于data. 这就是为什么我调用 API 来获取它的统计信息。但是 React 仍然调用该render函数,因此组件崩溃了。

如何在此组件中设置初始状态,以提供data名为 的空地图:stats,从而防止尝试nil(om/build model-stats-view)调用中呈现?

0 投票
1 回答
364 浏览

clojure - Om Next Tutorial: 正确调用 get-people 函数

我目前正在关注 om-next教程。在添加读取部分,get-people定义了一个函数。除此功能外,init-data还定义了包含人员列表的地图。

这是我尝试调用此函数的尝试。

如您所见,我只是返回了nils 的向量。我不太明白我应该如何调用这个函数。有人可以帮帮我吗?谢谢!

0 投票
1 回答
210 浏览

clojure - Query Composition With Unions 如何与通过 Om Next 中的 props 传递的父子树一起工作

我有两个组件 A 和 B。我想在页面上的这两个组件之间切换。

一种解决方案是使用父组件 C:

问题是查询。C 需要同时查询 A 和 B,即使其中一个被显示。

我需要 C 要么不参与查询,要么只查询 A 或 B。

这些是真的,还是有解决方法:

  • 子组件只能查询其父组件传递的 props。
  • 父组件必须查询其子组件,以便将它们传递给子组件。
  • 只有根组件查询app-state.
0 投票
1 回答
644 浏览

unit-testing - 通过模拟请求使用异步 api 调用测试组件

我仍处于 Cljs 和 Om 的学习阶段。我正在研究编写组件测试。一些组件cljs-http调用了我创建的 API。在测试时,我不希望这些 API 调用实际发送请求,所以我正在研究模拟请求并返回一个夹具。这是我拥有的示例组件:

请不要介意代码实际上在语法上是否正确,我只是在展示它的要点。

我现在要做的是测试这个async-component和 API 调用,看看它是否会呈现我用来模拟请求的夹具。这是怎么做到的?我知道cljs.testasync测试异步代码的块,但所有示例都显示它测试只有 ago的实际代码块,而不是在更大的上下文中。

0 投票
1 回答
330 浏览

clojure - 如何在 clojure 中访问 c​​ore.cljs 中的 db.clj 方法

我正在尝试在clojure. 我已经使用clojurescript om并做出了反应。有两个文件core.cljsdb.clj. core.cljs包含 ui forlogin pagedb.clj包含所有database connections.

现在我正在尝试db.clj在 core.cljs 中调用方法 add-user[username password]。

db.clj

core.cljs

但我无法在core.cljs. 它显示了一些错误消息,例如

0 投票
2 回答
342 浏览

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 文档中找不到指导。

  1. 以不同方式呈现相同组件的正确方法是什么?(在我的例子中,view函数的输入字段。)
  2. 什么 React 或 Om 文档是相关的?

更新:当我将edit?标志硬编码为 时,我可以使输入可编辑true,因此使输入可编辑不是问题:问题是从staticto切换text(反之亦然)。

0 投票
1 回答
467 浏览

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*

0 投票
0 回答
103 浏览

clojurescript - 无法读取未定义 om alpha26 的属性“force_children”

在我决定升级到 om-alpha26 之前,我的应用程序运行正常。现在我得到:无法读取未定义的属性“force_children”

我试过删除我的目标文件夹并执行“lein clean”无济于事。

google 上没有任何内容,除了更新我的 project.clj 中的 om 版本之外,我没有进行其他代码更改。我使用栗子作为我的开发环境。

这是我的project.clj:

更新:

'force_children' 函数不是我定义的函数。在堆栈跟踪之后,它看起来像是在(om.dom/div ....children)上被调用。当我从代码编译的表达式中删除子节点时,代码如下:

我怀疑这与栗子有关,因为当我将代码上传到 heroku 时不会发生错误。这是堆栈跟踪:

谢谢!