问题标签 [reagent]

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 回答
149 浏览

playframework - 在 sbt 中使用试剂

前段时间我使用了试剂库,对它的功能和速度非常满意。

但现在我参与了一些带有游戏框架的 Web 开发,并希望有机会在我的项目中使用这个不错的库。

有一个用于播放的clojurescript 编译插件,所以我想它可以用来编译,也许可以连接和最小化试剂资产。

所以问题是:可以在没有 leiningen 的情况下在 sbt build 上使用试剂吗?

更新: 我用谷歌搜索了 clojurescript plugin 的这个继任者

从插件的描述和这个问题(由后继库的作者) 我了解到应该在plugins.sbt

plugins.sbt后来添加了这段代码:

并编写示例 cljs

代码已编译并与 clojurescript 核心和试剂库连接。在删除了一些 requirejs 和 angular cloacks 之后,一切都变得神奇了。

所以现在我只有一个问题:我不能要求我自己的命名空间。尽管我clojure.lang.ExceptionInfo: No such namespace:在 clojurescript 编译期间尝试了所有命名尝试。

那个来源的角度来看,我可以说我的项目中 clojurescript 编译器的入口点是app/assets/所以我的主文件具有以下命名空间定义:

我的次要来源有这个定义:

两者都位于app/assets/javascripts文件夹中。

0 投票
0 回答
985 浏览

clojurescript - 在 ClojureScript Reagent 中,如何注册捕获捕获事件的事件处理程序?

我正在使用 ClojureScript 试剂,我想在捕获阶段捕获一个事件。

我阅读了 React.js 文档,发现我可以像这样注册事件处理程序,onClickCapture所以我希望如果我添加:on-click-capture我的 Reagent 代码这可以工作:

输出始终为 3,即冒泡阶段。我怎样才能让它用于捕获事件?

0 投票
2 回答
115 浏览

clojurescript - js/clear 从 repl 调用时抛出错误

我正在使用试剂并使用 weasel(使用启动的 Tenzing 模板)连接到浏览器。在我的浏览器(chrome)控制台中,我可以调用clear()它并且它可以工作。

但是,当我在我的 cider repl 中键入 (js/clear) 时,它会引发错误 -

ReferenceError:未定义清除

但是,我可以毫无问题地运行 (js/alert "Hello")。有什么想法有什么问题吗?

0 投票
1 回答
4019 浏览

ajax - Ajax GET 与试剂

我正在从我的 Reagent 应用程序中执行 Ajax GET,以从数据库中加载一些内容。

我不完全确定将这种 ajax 调用结果获取到我的页面的最佳方法是什么,考虑到如果我将它放在一个原子中,那么 Reagent 会在取消引用原子时自动重新渲染一个组件,这意味着我得到一个无限的ajax调用序列。

对于一些代码,

这个函数基本上创建了一个[:ul [:li "Stuff here"] [:li "And here"]]

我想在我的页面上显示,现在有以下代码。

0 投票
1 回答
701 浏览

clojure - 枚举命名空间并在 ClojureScript 中动态加载它们

这实际上可能是一个XY 问题,所以我将尝试首先解释目标是什么。

我正在构建一个由一组Reagent组件组成的 ClojureScript 应用程序。它提供了一个用户界面,您可以在其中动态添加或删除 UI 元素。这些 UI 元素(组件)具有一定的类型。例如 Markdown 组件is-aText 组件。每当用户看到添加 Text 的选项时,我们都会列出与 type+后代匹配的所有组件(在本例中为 Markdown,可能还有其他组件)。

我编码的方式如下。每个组件都在自己的命名空间中,这个命名空间包含一个返回新组件的构建器函数。在命名空间的根,它还调用(派生::type ::parent)

现在在一些不同的命名空间中,我们需要并在一个映射中枚举所有这些组件,例如:

其中/t指的是用于定义层次结构的命名空间限定关键字。我们使用all地图为面向用户的菜单提供数据(可以添加哪些组件,按类型过滤)。

现在,您可以想象,这并不漂亮。因为它现在必须手动维护层次结构中所有类型的(可能)长列表。

相反,我会做类似的事情,(def all (components-of (descendants ::root)))但我不确定如何解决这个问题,因为我认为它需要按名称查找变量(ClojureScript 不支持)。

所以我的问题是:如何在 ClojureScript 中(动态地)维护名称空间 + 变量的映射或列表?

0 投票
4 回答
1818 浏览

clojure - 使用 Clojure/Reagent 制作一个简单的倒数计时器

我正在尝试几乎没有经验的 Clojure 和 Reagent,试图制作一个简单的计时器。

在我按下重置按钮之前,计时器倒计时似乎可以正常工作。之后,计时器开始以两倍的速度倒计时。每次我按下重置按钮时,它都会更快地倒计时。

如何让计时器在页面加载时自动倒计时,但在单击重置按钮时不会更快地倒计时?

0 投票
2 回答
921 浏览

html - Clojurescript / 试剂中的两行循环表体

我无法使用 clojurescript / 试剂让我的桌子主体正确排列。我实际上不确定这是否是我不明白在 html 中做什么或什么......

目前我使用循环显示表格主体

问题是我需要使用一些html元素在for之外和for内部进行分组,对吗?如果我在两者上都使用 [:tbody] ,它会弄乱与 [:thead] 部分的对齐。如果我使用 tbody 以外的元素,那么它会产生各种其他问题。如果我删除 for 循环中的 [:tbody] 和最后一个 [:tr],一切看起来都很好。

编辑:我目前已经缩小了很多问题。我的应用程序 ajax 获取和取消引用与表相关的数据。在此重新渲染时,表格的格式会变得混乱。

Edit2:我发现了问题。

当地图列表重新渲染表格的对齐方式时。

0 投票
1 回答
696 浏览

leiningen - 如何/我可以从 ClojureScript 编译器输出中排除继承的外部库?

我正在使用reagent 0.5.0取决于cljsjs/react. 后者附带以下deps.cljs

这使得 React 的 JavaScript 最终出现在编译器输出中。

我想防止这种情况发生,因为我也想在纯 JavaScript 页面中使用 React。

此外,reagent/core.cljs有一个:require [cljsjs.react]指令(强制包含?),因此不能简单地省略依赖项。

有没有办法防止 React 出现在编译器输出中?

0 投票
1 回答
3838 浏览

clojure - 列表项试剂 clojurescript 的单击处理程序

我想为列表中的每个项目添加一个单击处理程序。

然后 selected-department 是我要显示/使用数据的标签

注释掉的代码不起作用。有没有办法使这项工作?

0 投票
1 回答
2529 浏览

clojurescript - re-frame: 输入 :on-change reset! 不改变输入值

我正在玩这个re-frame框架。


在下面的代码中,当用户输入内容时,我无法更新输入值:

:value在我更改为之前,输入值不会更改:defaultValue。我很确定上面的例子与Reagent输入的例子很相似。


在下面的代码中,当用户更新输入值时,我尝试做两件事。我正在尝试reset!输入的值以及dispatch事件处理程序的值。我已经将这两个函数调用都包含在一个do调用中。

另外值得注意的是,在下面的代码中,用户可以更新文本字段中的值。

在 javascript 控制台中,我收到以下错误:


感谢大家的任何帮助!