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

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

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


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

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


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

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

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


感谢大家的任何帮助!

0 投票
1 回答
134 浏览

clojure - 在重新帧加载时处理丢失的数据

在重新框架中,我的观点基本上是这样的:

它会立即显示,但 current-tool 可能需要一段时间才能显示,因为除非之前已加载,否则需要从服务器请求工具数据。在此期间,@currrent-tool 为 nil,此代码崩溃。处理这个问题的适当方法是什么?我想过这样做:

哪个有效,但是在加载时会显示一个空白页面。如果我做:

我觉得这个视图正在扮演一个它应该有的额外角色:知道如何显示加载消息。此外,我可以看到这迅速演变成:

这感觉像是一种常见的模式,我会一遍又一遍地重复。由于 re-frame 已经提供了一种模式,我想知道我是否遗漏了一些东西。有没有不同的方法来构建一个使用 re-frame 的应用程序,最终不必抽象出我刚刚发现的这种模式?

我想用更通用的术语来说,您如何处理试剂应用程序中丢失的数据?

0 投票
2 回答
908 浏览

clojure - 如何让处理程序在重新框架中按顺序运行?

从这两个负责获取当前用户信息的处理程序开始:

在一个页面中,我想显示朋友列表,但问题是它取决于首先获取的用户:

我应该如何构造这段代码?

0 投票
1 回答
162 浏览

clojurescript - 依赖于输入 arg 和 re-frame 中的派生集合

刚开始使用re-frame,遇到以下困难。我有一个组件(Form-2),它采用一个 arg,reaction基于它创建,并像这样返回渲染器

后来我称之为

some是反应。在这里,当我用它调用some-list时,[]它绑定到初始,some因此在订阅中bars始终具有相同(:id @some)的订阅并从订阅中获得相同的值。

你能告诉我如何解决吗?提前致谢。

0 投票
1 回答
308 浏览

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

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

我该怎么做?

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

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

0 投票
2 回答
1032 浏览

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

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

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 投票
1 回答
544 浏览

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

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

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

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

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

我究竟做错了什么?

谢谢!

0 投票
2 回答
1015 浏览

clojurescript - 重新框架中的嵌套组件未更新

我正在使用 re-frame 构建一个单页应用程序。应用程序的每个“页面”调用一个组件base-page,然后提供其特定页面的子...

这会使用 的初始值正确呈现页面:count,并且当我(dispatch [:inc])正确运行页面更新时。

现在我想base-page成为一个 form-2 组件,这样它就可以拥有自己的订阅......

但是,当我这样做时,test-page当我运行时计数不再更新(dispatch [:inc])。我觉得这很令人惊讶,因为我认为 Reagent 在幕后将 form-1 和 form-2 组件打包成 form-3 组件。

这是预期的行为吗?如果是这样,是否有更好的方法来实现我的基本页面/具体页面模型?

0 投票
1 回答
726 浏览

react-native - 数据源属性不会从试剂传播到 React Native ListView 组件的渲染方法

我正在尝试在试剂中呈现 React Native ListView。

我有以下片段:

以上导致“道具类型失败:dataSource未指定所需道具ListView。检查渲染方法app.ios.ui.main_scene。” 随后是“无法读取未定义的属性'rowIdentities'”,因为数据源在ListView的渲染方法中未定义。

我的第一个猜测是在试剂/打嗝或其他任何内部的某处对“数据”属性进行了一些特殊处理,但我找不到任何线索来解释为什么该属性没有正确传播。

而且,是的,(.cloneWithRows data-source rows)实际上返回了一个有效的 ListViewDataSource 对象实例。

然后,如果我通过了:data-source:dataSource我得到的只是一个令人费解的“StaticRenderer.render():必须返回一个有效的 ReactComponent。您可能返回了未定义的数组或其他一些无效对象。”

我正在使用react-native 0.18.1和。我已经检查过这个并得到了同样的错误。reagent 0.5.1re-frame 0.6.0reagent 0.6.0-alphare-frame 0.7.0-alpha

我已经挖掘了几个小时,我想我需要一些帮助。尝试解决此问题的任何提示/想法,要查看的代码中的任何引用?提前致谢。