问题标签 [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 投票
1 回答
48 浏览

clojurescript - 我可以将我的应用程序的内容(试剂组件)存储在重新框架数据库中吗?

这是我的应用程序的结构:

我的问题是,我可以将我的应用程序的内容组件(如示例中的日历)存储在重新框架数据库中吗?您如何看待此解决方案的性能?

0 投票
1 回答
294 浏览

io - 使用客户端 clojurescript/re-frame 应用程序读取文件

我正在编写一个客户端应用程序,它应该读取文件,转换其内容,然后导出结果。为此,我决定使用 Re-Frame。

现在,我刚刚开始围绕 Re-Frame 和 cloujurescipt 本身进行思考,并让以下事情起作用:

在我的视图函数的某个地方,每当通过简单的 HTML 输入选择新文件时,我都会发送这个。

我得到的是类似的东西C:\fakepath\file-name.txt,而 fakepath 实际上是其中的一部分。

我的事件处理程序当前仅拆分名称并保存我上面的输入订阅的文件名以显示所选文件。

此外,我想读入文件以便稍后在本地处理它。假设我只是更改我的on-change操作和事件处理程序来执行此操作,我该怎么做?

我已经搜索了一段时间,但几乎一无所获。唯一出现在其他框架等的地方,但我不想为每个新问题引入新的依赖关系。

0 投票
1 回答
54 浏览

clojurescript - 重启!在试剂原子上没有按预期工作

所以我要做的是使用 re-com 的水平选项卡元素的基本选项卡式视图。我添加了一个 v-box 元素,在它下面我想要我的选项卡元素和与选项卡对应的正文。虽然在 :on-change 我叫重置!在水平选项卡的模型上,它似乎不起作用。

如果不是

我做类似的事情

它总是会打印我在开始时设置我的试剂原子的值(在本例中为::forms)

0 投票
0 回答
89 浏览

clojurescript - 在子组件中订阅,而不是将 atom 作为参数传递。(试剂/重新构架)

你怎么看?哪种解决方案的性能效率更高?

A) 订阅子组件中的 re-frame db atom

B)将该原子作为参数传递给子组件。

以下是 A 的示例:

B 示例:

B/2 的示例:

0 投票
2 回答
137 浏览

clojurescript - Clojure 脚本。发生重新渲染时重置 Reagent 中的原子

我正在为测验测试显示一组问题,并为每个问题分配一个数字,以便在浏览器中显示它们时对其进行编号:

问题是,当有人在浏览器中编辑问题时(调用调度并更新“app-db”映射)组件被重新渲染,但原子“计数器”逻辑上从最后一个数字而不是从零开始. 所以我需要重置原子,但我不知道在哪里。我尝试在匿名函数中使用let,但这没有用。

0 投票
1 回答
52 浏览

clojurescript - 如何在 cljs re-frame 中创建自定义“getter”查询?

我正在编写一个重新构建应用程序来模拟棋盘游戏,其中我有一个包含一组单元格的棋盘结构,例如:

(db :board-cells)虽然re -frame 支持使用漂亮的关键字语法((get (nth (db :board-cells) index) :material)如 这也有将我的数据库的物理布局与我的应用程序逻辑紧密耦合的缺点。如果我决定改变我的数据库结构怎么办?然后我必须更新十个不同的点,而不仅仅是一个。

是否有一种重新构建官方方法来创建“虚拟查询”,这样我就可以获得类似的材料(db :get-nth-mat n),其中 n 是board-cells数组中的单元格编号?我认为这是我可以做到db.cljsreg-sub地方,但它似乎不起作用。是的,我可以创建自己的吸气剂:

并称它为(println "mat-4=" (cell/get-material db 4)),但这并不像(db :get-nth-mat n)

非常感谢。

0 投票
1 回答
527 浏览

clojurescript - 如何在重新框架应用程序的 js 目录上添加影子 cljs 观察程序?

我使用模板创建了一个基本的重新框架应用程序lein new re-frame my-proj。这个特定的项目与需要一些 ES6 模块和 ES6 类的框架(ecsy)交互,例如由用户生成的代码,而不是简单地从 cljs 调用。由于 Clojurescript 当前不生成 ES6 代码,因此我在我的项目中创建了一些包装 ES6 模块,我计划从中调用 cljs 代码。

经过一番折腾,我发现没有必要将这些 js 包装器模块转换为完整的 npm 模块'node_modules',而是我可以简单地将它们放在我的项目的子目录中,例如resources/libs,然后将此目录添加:js-optionsshadow-cljs.edn

所以现在一切正常,但唯一的问题是如果我在 'resources/public'中编辑任何 js 文件,lein.bat dev编译器不会检测到更改。我可以进去对“.cljs”文件进行模拟更改,这确实会导致编译器重新编译,但它仍然没有接收到对“.js”文件(或“.js”文件所做的更改)。 mjs 的文件)。我必须通过 ctrl-c 杀死编译器并重新启动它以传播更改。不幸的是,这需要大约 15 秒来编译,因为它是一个完整的编译。

我尝试添加'resources/libs'到我的'project.clj'

无济于事。

我还尝试从以下位置删除已编译的 js 文件<my_proj-dir>/resources/public/js/compiled/cljs-runtime

在这种情况下,编译器会重新生成文件(在进行模拟 .cljs 更改时),但它仍然使用以前的版本,例如它必须使用缓存版本。

有没有办法可以在这个 js 目录中添加一个观察者,这样我就可以进行增量构建?'src/cljs' 目录上显然已经有一个观察者了。我咨询了shadow-cljs 用户 gd。但老实说,这有点压倒性。

0 投票
1 回答
169 浏览

clojurescript - 如何在带有点击事件的试剂渲染后更改状态(img 的 src)clojurescript 组件

我们有感人的 clojurescript代码,但是当单击缩略图时图像发生变化时,所选图像需要使用缩放器进行渲染。

我们开始点击缩略图,这会改变所选图像的原子,并传递给缩放器代码:

使用图像 url 安装组件。zoomer [image]渲染组件安装时(第一次)工作时传递图像原始大小的 url [:img {:src image,但是当单击另一个图像时,原子会做出反应但不会“重新渲染”:

我看到了这个使用带有 G Maps 的有状态 JS 组件的例子。

0 投票
1 回答
57 浏览

clojurescript - 如何在 Re-frame (ClojureScript) 中重置计数器

这一定是每个人在学习新框架时都会发现的那些愚蠢/复杂的事情之一。所以我有这个功能:

@counter atom不保存任何重要数据,它只是一个“可视”计数器,用于显示列表中的数字。第一次加载页面时,一切正常,如果列表显示五个问题(1..5),问题是当创建/编辑/删除订阅问题时:

再次调用,然后当然会显示列表,但现在从 6 到 11。所以我需要一种方法来重置 @counter。

0 投票
0 回答
78 浏览

clojurescript - 如何在重新框架中正确地将文本输入的值保存到数据库中?

我正在使用 reframe 处理文本输入,如下所示:

但是在输入文本时,当按下一个键时,我会得到以下信息,例如键“p”:

我究竟做错了什么?