问题标签 [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.
clojurescript - re-frame: 输入 :on-change reset! 不改变输入值
我正在玩这个re-frame
框架。
在下面的代码中,当用户输入内容时,我无法更新输入值:
:value
在我更改为之前,输入值不会更改:defaultValue
。我很确定上面的例子与Reagent
输入的例子很相似。
在下面的代码中,当用户更新输入值时,我尝试做两件事。我正在尝试reset!
输入的值以及dispatch
事件处理程序的值。我已经将这两个函数调用都包含在一个do
调用中。
另外值得注意的是,在下面的代码中,用户可以更新文本字段中的值。
在 javascript 控制台中,我收到以下错误:
感谢大家的任何帮助!
clojure - 在重新帧加载时处理丢失的数据
在重新框架中,我的观点基本上是这样的:
它会立即显示,但 current-tool 可能需要一段时间才能显示,因为除非之前已加载,否则需要从服务器请求工具数据。在此期间,@currrent-tool 为 nil,此代码崩溃。处理这个问题的适当方法是什么?我想过这样做:
哪个有效,但是在加载时会显示一个空白页面。如果我做:
我觉得这个视图正在扮演一个它应该有的额外角色:知道如何显示加载消息。此外,我可以看到这迅速演变成:
这感觉像是一种常见的模式,我会一遍又一遍地重复。由于 re-frame 已经提供了一种模式,我想知道我是否遗漏了一些东西。有没有不同的方法来构建一个使用 re-frame 的应用程序,最终不必抽象出我刚刚发现的这种模式?
我想用更通用的术语来说,您如何处理试剂应用程序中丢失的数据?
clojure - 如何让处理程序在重新框架中按顺序运行?
从这两个负责获取当前用户信息的处理程序开始:
在一个页面中,我想显示朋友列表,但问题是它取决于首先获取的用户:
我应该如何构造这段代码?
clojurescript - 依赖于输入 arg 和 re-frame 中的派生集合
刚开始使用re-frame,遇到以下困难。我有一个组件(Form-2),它采用一个 arg,reaction
基于它创建,并像这样返回渲染器
后来我称之为
some
是反应。在这里,当我用它调用some-list
时,[]
它绑定到初始,some
因此在订阅中bars
始终具有相同(:id @some)
的订阅并从订阅中获得相同的值。
你能告诉我如何解决吗?提前致谢。
clojurescript - 在 ClojureScript 中,让 go-loop 运行直到它的通道被耗尽
我正在使用的一个库,re-frame,使用go-loop 来处理事件。在我正在编写的 ClojureScript 函数中,我需要停止并等待该通道耗尽,即所有事件都已处理(包括在事件处理期间生成的事件)。
我该怎么做?
一点上下文。我正在编写一个用于单页应用程序的服务器端渲染的库,并且我已经准备好在 NodeJS 中运行该应用程序,问题是我或多或少地这样做了:
事件处理程序:get-data-needed-to-render
将触发一个或多个 AJAX 请求到服务器以获取渲染应用程序所需的数据,即reagent/render-to-string
.
clojure - 试剂形式是否意味着与重新框架一起使用?
我正在构建一个带有 re-frame 的应用程序,我想知道 reagent-form 是否意味着要与 re-frame 一起使用,因为 reagent-form 会带来与 re-frame 不同的处理状态的自己的方式.
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
reagent - 重构、试剂组件生命周期和无花果
我正在尝试同时学习很多东西,所以我的问题可能有点偏离目标。
我用 lein 创建了一个重新框架模板项目,并且我有我的默认主要组件:
我想为按键添加一个事件侦听器,但我无法正确地做到这一点:如果我只设置(使用domina)(listen! ...)
中的:component-did-mount
. 如果我设置unlisten!
in component-will-unmount
,我在按键上没有结果。
我注意到的是,在每次重新加载无花果时,都会:component-will-unmount
在:component-did-mount
!
我究竟做错了什么?
谢谢!
clojurescript - 重新框架中的嵌套组件未更新
我正在使用 re-frame 构建一个单页应用程序。应用程序的每个“页面”调用一个组件base-page
,然后提供其特定页面的子...
这会使用 的初始值正确呈现页面:count
,并且当我(dispatch [:inc])
正确运行页面更新时。
现在我想base-page
成为一个 form-2 组件,这样它就可以拥有自己的订阅......
但是,当我这样做时,test-page
当我运行时计数不再更新(dispatch [:inc])
。我觉得这很令人惊讶,因为我认为 Reagent 在幕后将 form-1 和 form-2 组件打包成 form-3 组件。
这是预期的行为吗?如果是这样,是否有更好的方法来实现我的基本页面/具体页面模型?
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.1
re-frame 0.6.0
reagent 0.6.0-alpha
re-frame 0.7.0-alpha
我已经挖掘了几个小时,我想我需要一些帮助。尝试解决此问题的任何提示/想法,要查看的代码中的任何引用?提前致谢。