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

reagent - 重构、试剂组件生命周期和无花果

我正在尝试同时学习很多东西,所以我的问题可能有点偏离目标。

我用 lein 创建了一个重新框架模板项目,并且我有我的默认主要组件:

我想为按键添加一个事件侦听器,但我无法正确地做到这一点:如果我只设置(使用domina)(listen! ...)中的:component-did-mount. 如果我设置unlisten!in component-will-unmount,我在按键上没有结果。

我注意到的是,在每次重新加载无花果时,都会:component-will-unmount:component-did-mount!

我究竟做错了什么?

谢谢!

0 投票
2 回答
7928 浏览

clojurescript - Reagent React Clojurescript 警告:seq 中的每个元素都应该有一个唯一的 :key

我从这里复制了一个两年前的要点。它现在正在使用 Figwheel 并使用更新版本的 Reagent/React。我正在寻找一种通用方法来隔离来自 Javascript 控制台的此警告消息:Warning: Every element in a seq should have a unique :key. 这个想法是将:key具有生成的唯一值的 a 放入所有组件中。然后消息应该会消失,我将能够查看哪些组件需要 unique :key。我的问题是,即使:key所有这些都放入了唯一的,但仍然可以看到警告消息。

那么 - 有人能告诉我我错过了哪个组件或者我做错了什么吗?正如您从源代码(永久链接)中看到的那样,我已添加:key (gen-key)到这两个组件中:分别在第 43 行和第 68 行[:polyline {:key (gen-key) ...[:svg {:key (gen-key) ...

编辑所以这就是答案(永久链接),无论如何就代码而言。只需查找第^{:key (gen-key)}44 行和第 60 行的位置。

请注意,该函数gen-key是为调试而设计的。替换的自然键。

这就是你可能实现的方式gen-key

这是上面链接中完成的方式:

0 投票
1 回答
120 浏览

clojure - 如何为 cljsjs/react 卷曲 .jar?

我正在关注Clojurescript Quick Start,并且我将继续构建一个 clojurescript 项目,而不依赖于像 lein 或 boot 这样的构建工具来确保我了解真正发生的事情。

我正试图引入对试剂的依赖,它本身有一些依赖,比如cljsjs/reactcljsjs/react-dom。与 cljsjs 依赖项相关的快速入门中的说明在此处并给出了. 这不适用于,因为没有。有人可以解释一下:curlclojars.com.jarcljsjs/react.jar

  • 如果没有像 lein/boot 这样的构建工具,我如何才能前进
  • 为什么没有.jar
  • 这里实际发生了什么?

为了让试剂工作,我能够克隆试剂回购并运行lein compilelein uberjar获得一个.jar我可以放置在我的项目的根目录中并使用 构建的java -cp cljs.jar:reagent-0.6.0.jar:src clojure.main build.clj,但我对这种反应依赖感到茫然。谢谢你的时间。

0 投票
1 回答
880 浏览

clojure - 如何在 Clojure 中使用地图向量更新试剂原子

假设我有一个带有如下图向量的试剂原子:

如何将某个向量索引处的键值更新为:

我正在寻找类似的功能(update-my-atom 1 :name "UPDATED second name")

0 投票
2 回答
293 浏览

clojurescript - 试剂表单绑定字段忽略“:字段”,缺少依赖项或使用不正确?

我无法reagent-forms绑定到原子。我在同一文件的其他地方有数据绑定在试剂中工作。我可以按预期设置和显示有问题的原子。

我有

  • form-doc返回一个[:div]带有我想要绑定的输入的向量
  • form-test创建一个原子并调用bind-forms
  • secretary定义的路线/#/test

似乎返回值中的:fieldform-doc被忽略或未被解析bind-fields.

在下面的测试示例中,从不显示日期选择器,并且输入看起来没有什么不同[:input ]

我使用reagent-forms不正确吗?缺少 js 依赖项?


浏览器呈现的 HTMLlocalhost.localdomain:3000/#/test

core.cljs

在环/复合处理程序中我有

据我所知,所有必要的 js 和 css 都由浏览器加载

project.clj:dependencies

0 投票
1 回答
1752 浏览

clojure - 在 Clojurescript 试剂中将数据放入表格中

我正在构建一个 ClojureScript 应用程序,但在使用试剂填充数据表时遇到了问题。我遇到的两个问题是大量的表单警告

Every element in a seq should have a unique :key

而且,一旦我调用执行渲染的函数,它就会正确渲染,然后我的整个页面冻结并重新加载页面是修复它的唯一方法。这是我的两个功能:

当我调用以下命令时,我收到警告并且页面冻结,尽管它确实呈现正确:

我是否以错误的方式接近填写数据的过程?有没有更简单的方法?

0 投票
1 回答
361 浏览

clojure - 使用 core.async 进行测试 - 在测试中刷新 go 块?

我正在尝试编写这样的测试:

我有这个模拟:

登录功能这样做:

登录表单是一个试剂组件,它接受 onClick 的回调。app-state 是一个全局可访问的原子。

我面临的问题是登录里面的 go 块!永远不会被执行。我需要做些什么来刷新通道或其他什么吗?

我看到还有一个类似的未回答问题:Testing core.async code in ClojureScript。一个区别似乎是我的测试代码中没有明确的通道。这是由 cljs-http 帖子生成的。

0 投票
1 回答
1463 浏览

unit-testing - Clojurescript/Reagent 单元测试组件输出和行为

我们使用 react 大约一年了,数据不可变,非常令人印象深刻。我们现在想要迁移到 Clojurescript/Reagent,但是我们需要一种非常好的方法来测试我们的代码。对于组件,这就是我们所做的:

  1. 根据我们发送的 props 测试组件的输出:
  2. 测试组件在点击之类的事件发生时调用正确的函数并使用正确的参数

对于 1,它会像:

对于 2,它将类似于:

我们使用 facebook Jest 进行测试。

我如何在 Clojurescript 中使用 Reagent 做同样的事情,最好让测试自动运行?

0 投票
1 回答
101 浏览

clojurescript - Clojurescript/reagent 没有自动渲染

我们之前使用 FB React 编写代码,使用单个不可变的应用程序状态。但是,我们做了如下渲染:

在哪里渲染:

在试剂中,我们使用 ar/atom,在每次交换时都会检查我们是否需要进行另一次渲染。对于非常简单的东西,比如上面那个,没关系,但是如果操作非常复杂,包括很多来回的 ajax 操作,手动控制何时渲染会更好。

我们之前工作的 TODOMVC 在这里:http: //jsfiddle.net/danbunea1/bL62p47n/

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*