问题标签 [re-frame]

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 投票
2 回答
1242 浏览

clojurescript - 如何在同一个事件处理程序中调用 re-frame.core/dispatch 和 re-frame.core/subscribe

0 投票
1 回答
2823 浏览

clojure - 如何处理 Clojure Re-Frame 中的输入元素?

我有几个选择,但似乎都有点滞后,我认为应该有更好的选择。我只是希望能够创建表单,甚至动态地创建它们(例如,从我的应用程序中向表单添加行),并对不同输入的值进行适当的响应/重新框架/反应访问。

不确定这些中的任何一个是否是最好的选择,因为它们都在每个:on-change...

选项 #1 - 更新:on-change到全局原子

选项#2 - 更新一些本地状态,只发送到全局原子:on-blur

第二个选项稍微不那么滞后,但比原始文本输入更滞后......

编辑:

选项 #3 - 为了完整起见,改编自 re-frame 的 TODOMVC 的风格略有不同

0 投票
1 回答
831 浏览

clojurescript - 编写不改变 app-db 的重帧事件

有些事件不会导致app-db改变。他们只改变dom,例如:初始化自定义滚动,获取选定的文本等。我​​应该如何在重新框架中处理它们,因为事件处理程序需要返回一个新的app-db?我通过返回现有的数据库来解决问题,但它似乎不正确。有更好的方法吗?我的一些处理程序如下所示:

0 投票
1 回答
416 浏览

clojurescript - 带有客户端路由的 SPA 的 Clojure 服务器配置

我正在开发一个在客户端路由的 ClojureScript 单页应用程序。我想实现一个简单的服务器,它可以为我的 index.html 和 CSS/JS 提供服务。这个想法是将除 /static/* 之外的所有请求传递到客户端并允许我的 SPA 处理它。

结果出乎意料地困难。下面的片段是我想出来的,但它不起作用。

我将 boot-http 与自定义处理程序一起使用。它有可能导致它吗?

0 投票
2 回答
76 浏览

javascript - 单向数据流:在处理大量项目时减轻返工?

据我了解如何使用单向数据流 (Flux),它似乎不适合特定用例。我们有一个 SPA,它显示整个月的数百个日历条目的列表。每个条目都总结了一些细节。

UI 允许用户通过单击来展开条目以显示其他详细信息。这是一个简单的问题,只需expanded在模型中的条目上进行一点切换。

困扰我的部分变化是每个用户操作都需要重新渲染视图模型,然后再与 DOM 协调一致。因此,在数百个条目中切换一点会触发相当多的返工,重新生成数百个未对其进行更改的其他条目,以适应其中的更改。

必须有一种方法将更新消息传递到正确的邮箱,以避免不必要的返工。我知道 React 使用键来尝试优化视图模型与 DOM 的协调方式,但即使进行了这种优化,整个视图模型也会在任何操作上完全重新生成。如果消息路由和 DOM 协调更好,我看不出为什么不能显示数千个项目的列表。

我正在想办法解决这个问题。我的方法使用了一种记忆化版本,它缓存了来自先前渲染的视图模型。我有兴趣从他人的创新中学习。

0 投票
2 回答
792 浏览

clojure - 应该如何处理 Clojure re-frame 中的 AJAX 成功/错误响应?

我喜欢 re-frame,但我意识到我在寻找处理 AJAX 响应的好模式时遇到了一些麻烦。

我的情况如下:

我有一个“全局”事件处理程序,它触发一些 AJAX 调用并调度到其他一些全局事件处理程序,具体取决于该调用是否成功,例如:

(我知道reg-event-fx和东西,为了简洁起见,我只是在这里避免它,因为我认为它对我的问题没有任何影响)。

我还有(多个,不同的)可能触发:store-value事件的 UI 组件,如下所示:

因此,在这种情况下,组件具有本地状态 ( processing?),它应该取决于 AJAX 调用是否仍在进行中。

现在,让button组件对事件做出反应:store-value-success并在AJAX 调用完成后将标志:store-value-error重置processing?回的正确模式是什么?false

目前,我正在通过传递回调来解决这个问题,但这看起来真的很难看,因为它使事件处理程序的代码与不属于那里的东西混杂在一起。

我想到的最好的解决方案是让button组件能够挂钩:store-value-success:store-value-error事件并为这些事件安装自己的处理程序,如下所示:

但是,这是行不通的。看起来,重新框架不允许每个事件有多个事件处理程序。相反,reg-event-db对单个事件 id 的后续调用将替换先前的事件处理程序。

那么你们是如何处理这种情况的呢?

0 投票
1 回答
179 浏览

clojure - lein-npm 下载依赖项的依赖项(重新框架模板)

lein-npm插件添加到我的re-frame项目管理npm依赖项时,lein-npm意外添加了依赖项的依赖项。我的理解是这是不必要的,因为它们要么包含在我的依赖项的 jar 中,要么不需要(因为lein-npm首先不需要添加到我的项目中)。

使用re-frame模板,我构建了我的这个最小示例project.clj

现在调用lein npm list会返回以下内容:

这会导致下载大约 15 MB 的依赖项,只需添加lein-npm. 我没有声明karma*这里显示的任何依赖项project.clj(事实上:我现在根本没有声明任何npm依赖项)。它们源自依赖项[re-frame "0.9.1"]

有没有办法防止这种情况?

0 投票
1 回答
200 浏览

clojurescript - 将重构应用程序连接到数据库

我的重新构建应用程序有问题。我不知道如何将它连接到我机器上的本地数据库。

在我编写的其他应用程序中,我不得不将数据库规范(用户名、密码等)添加到profiles.clj 中。我应该创建profiles.clj 并在那里添加我的数据库的位置吗?这是否意味着我也必须更新 project.clj ?

最后,对数据库进行查询,例如 GET 和 POST 请求,进入 db.cljs。

如果这些问题是微不足道的,我深表歉意,但在阅读了几次文档后,我仍然有点困惑

0 投票
1 回答
1664 浏览

clojure - 从 HTTP 请求解析 JSON 正文(使用 ring 和 re-frame-http-fx)

我有一个基于 re-frame 的 UI,并尝试使用re-frame-http-fx与我的服务器通信。发送和响应似乎有效。但是,我不知道如何将 JSON 正文解析为服务器上的 Clojure 映射。

这是我handler.clj能得到的最低限度的:

据我了解,wrap-json-body中间件应该用解析的版本(地图?)替换请求正文。

但是,我(prn body)json-post处理程序中得到的输出是这样的: #object[org.httpkit.BytesInputStream 0xda8b162 "BytesInputStream[len=41]"]

如果我尝试(prn (:title body))我得到的东西nil(尽管原始的 map-turned-json-request 包含:title,以及请求和响应正文)。

请求和响应包含正确的 json。请求Content-Type正确设置为application/json(由 发送re-frame-http-fx)。根据请求,缓冲区 (41) 的长度也是正确的正文长度。

我已经没有东西可以尝试了。有任何想法吗?

0 投票
2 回答
154 浏览

clojure - Luminus 和 Re-Frame Uberjar 错误

运行命令时,我有一个由lein new luminus <app-name> +jetty +mongodb +re-frame +cider该错误生成的小应用程序。uberjar它作为开发应用程序运行,通过lein repl.

由于使用 Datomic,我已经看到类似的错误被归结为依赖项不匹配,但这目前不是我项目中的依赖项。

这是调用生成的堆栈跟踪lein uberjar