问题标签 [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 回答
308 浏览

clojurescript - 在 ClojureScript 中,让 go-loop 运行直到它的通道被耗尽

我正在使用的一个库,re-frame,使用go-loop 来处理事件。在我正在编写的 ClojureScript 函数中,我需要停止并等待该通道耗尽,即所有事件都已处理(包括在事件处理期间生成的事件)。

我该怎么做?

一点上下文。我正在编写一个用于单页应用程序的服务器端渲染的库,并且我已经准备好在 NodeJS 中运行该应用程序,问题是我或多或少地这样做了:

事件处理程序:get-data-needed-to-render将触发一个或多个 AJAX 请求到服务器以获取渲染应用程序所需的数据,即reagent/render-to-string.

0 投票
1 回答
311 浏览

java - 为什么 figwheel 不将编译后的应用程序传递给浏览器?

我正在使用 Leiningen 2.5.2(Java 1.8.0_45-internal Open JDK 64-bit)和试剂模板(即lein new reagent foo)。

这可以lein figwheel按预期运行。

接下来,我要做的第一件事是将“视图”函数分解为单独的文件并将它们添加到应用程序命名空间:

core.cljs 片段:

home-page.cljs(整个文件):

当我在浏览器(铬或火狐)中查看应用程序时,它卡在“ClojureScript 尚未编译!” 尽管看似在终端中成功编译。如果我在 figwheel REPL 中输入命令,当它在浏览器中运行时,我会看到绿色的 Clojure 徽标,因此我知道它已连接。

几个月前我在一个试剂应用程序中工作过——发生了什么?我应该如何分离我的视图代码?(单个文件是无法管理的;这是很多打嗝。)

0 投票
2 回答
1412 浏览

clojure - 试剂中的交互式列表

我想创建一个默认隐藏的 html 元素列表(包括查询结果),但用户可以切换该状态。我在下面尝试了几种不同的方法作为玩具示例,但都无法正常工作。

这段代码正确地创建了三个按钮,它们正确地改变了 exps 状态,但它们永远不会隐藏内容。

另一方面,下面的代码将只创建一个元素,但它可以正常工作。

编辑:可能相关: https ://github.com/reagent-project/reagent/wiki/Beware-Event-Handlers-Returning-False

0 投票
2 回答
4560 浏览

clojurescript - 如何检测试剂中的“Enter”按键?

给定以下代码:

如何更改if条件以使输入按键与普通按键区分开来?e除了中的所有属性target似乎都是空的。

0 投票
2 回答
1032 浏览

clojure - 试剂形式是否意味着与重新框架一起使用?

我正在构建一个带有 re-frame 的应用程序,我想知道 reagent-form 是否意味着要与 re-frame 一起使用,因为 reagent-form 会带来与 re-frame 不同的处理状态的自己的方式.

0 投票
1 回答
1139 浏览

clojurescript - 如何在 Reagent(Clojurescript) 中将焦点从一个元素传递到另一个元素?

我正在尝试使用reagent编写可重复使用的标签控件。我需要做的是在用户单击祖先 div 元素后聚焦输入字段。更清楚地说,我想在用户单击带有类表单元素的div 后,将焦点放在带有类标签输入的输入上 我该如何实现呢?

0 投票
1 回答
464 浏览

reactjs - 没有缩小 React 库的试剂构建

我想得到一个比这个更有帮助的例外:

我正在尝试构建一个没有通常缩小的 React JavaScript 库的 Reagent 应用程序。到目前为止,这是我对project.clj文件的了解:

到目前为止,我已经将重要的(是吗?):optimizations :none放在 lein 项目文件的几个地方,但总是包含缩小的 React 库。

稍后……嗯,我现在很确定我应该看看这些文物。这里介绍了什么:optimizations意思:https ://github.com/clojure/clojurescript/wiki/Quick-Start :让优化摆脱“goog”是未定义的错误消息。

所以我现在使用这个:

,这很重要,因为它(明确地)显示试剂库包含反应库,并且可以修改此反应库。现在只是为了找出如何获得非缩小版本,我将能够回答我自己的问题......

0 投票
2 回答
1652 浏览

clojurescript - 为什么试剂不会在状态更改时重新呈现我的试剂表格

我需要创建一个包含选择字段的表单,其中选项取决于当前可用的邮件帐户。页面加载后,我在 API 请求中检索这些邮件帐户。

以下函数使用 select 元素创建表单。

pprint给了我以下输出:

我的问题是我页面上的选择保持为空,就好像选择没有重新呈现一样。

附录

我想我忘了添加一些代码:我将此表单包装在一个 KIOO 组件中,我在其中取消引用我的state原子。

然后该组件调用我的render-mail-account-select函数,并应正确重新呈现表单。

0 投票
4 回答
1911 浏览

clojure - 为什么多种方法不能作为 Reagent/Re-frame 的功能?

在我正在构建的一个使用 Reagent 和 Re-frame 的小型应用程序中,我使用多种方法来调度应该根据应用程序状态中的值显示哪个页面:

然后我有如下方法:

register-page函数将生成实际视图的位置:

我尝试更改我的应用程序,以便方法直接生成页面,如下所示:

这导致没有页面被渲染。在我的主面板中,我将调用更改pages为方括号,以便 Reagent 可以看到它:

这会导致第一个访问的页面正常工作,但在那之后,单击链接(导致当前路由更改)没有任何效果。

在首先加载的文件中需要定义各个方法的所有命名空间,该文件包含 init 函数,并且我可以选择任何单个页面并显示它的事实证明代码正在加载(然后,切换到另一个页面不会不工作):

https://github.com/carouselapps/ninjatools/blob/master/src/cljs/ninjatools/core.cljs#L8-L12

为了调试正在发生的事情,我定义了两条路线,:about并且:about2,一条作为函数,一条作为方法:

并使布局打印调用的结果pages(当然必须使用显式调用而不是方括号)。包装的函数,一个有效的函数,返回:

而方法返回:

如果我将方法更改为:

也就是说,在向量中返回函数,然后它开始工作。如果我对包装函数进行反向更改,它会以与方法相同的方式开始失败:

像 Reagent 的语法一样有点道理,[function]但它应该自动调用该函数。

我也开始输出@current-route到浏览器,如下所示:

并且我验证@current-route正在正确修改并且输出更新,只是没有[pages @current-route]

我的应用程序的完整源代码可以在这里找到:https ://github.com/carouselapps/ninjatools/tree/multi-methods

更新:根据 Michał Marczyk 的回答更正了方法的多样性。

0 投票
2 回答
1577 浏览

clojurescript - 试剂画布上的羽毛笔素描

我有一个 html 画布,想在上面显示一个 Quil 草图。大多数 Quil 示例用于defsketch在静态 html 页面上定义的画布上绘图。我想在这个 Reagent 组件中的画布上做它:

我发现做这类事情的最佳文档是here,但我不太清楚如何进入下一个级别并将其应用到上面的画布上。在上面的画布上画一条线的实际代码会很棒。

实际上,静态且始终运行defsketch就可以了-困难在于让它访问这种动态的画布。

如果它不能完成,那么很高兴知道,我将直接使用 Processing.js,假设这是下一个最好的主意。