问题标签 [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.
electron - Clojurescript:如何使 Web 应用程序版本与桌面电子版本共存
我创建了一个基于 leiningen 的 clojurescript webapp。
更具体地说,我使用的是重新框架模板:https ://github.com/Day8/re-frame-template 。
我想知道是否可以将这个项目编译成基于电子的桌面应用程序?我注意到有像https://github.com/Gonzih/cljs-electron这样的电子模板,但我不知道如何使网络版本与电子版本共存。
这甚至可能吗?
更新:
为了让我的问题更清楚:
你如何使基于电子的版本和基于网络的版本共享相同的代码库?有没有这样做的例子?
function - (def empty-queue #queue []) 中的“#queue”是什么意思?
阅读 re-frame 的源代码,我偶然发现了这一行:
是什么#queue
?它有什么作用?
clojure - 如何为 Reagent 组件编写装饰器
我有一些类似的试剂成分,可以以某些方式呈现给定的数字:
还有一些(简化的)状态:
而且我知道如何编写一个组件,它可以访问该状态并使用其中一个组件来呈现状态:
到目前为止,一切都很好。但这是耦合和重复的。
目标:
装饰器会很好,它可以获取一些状态并将其传递给孩子。用法如下所示:
可能的解决方案:
这行得通,但它与组件定义的向量相混淆,并且它假定了许多包装组件的参数。对于链式装饰器来说,它失败了。
必须有一个聪明而强大的解决方案。有任何想法吗?
reactjs - 对 Reagent 中的不同组件进行操作后的焦点和模糊组件
这是我的 Clojurescript 代码:
请注意,我也在使用重新框架。我在我的 app-db 中保留输入状态(其值和禁用状态)并在我的组件中订阅它们。因此,一旦这些道具中的任何一个发生变化(这就是我的焦点包装器的用途),就很容易强制将焦点放在组件上。
尽管如此,一旦单击跳过按钮,我正在努力寻找一种方法来强制关注输入。据我所知,这是 React 中一个典型的合理用例ref
,它在 Reagent 中的工作方式似乎有所不同。
有人可以推荐一种方法来解决 Reagent/re-frame 中这个特定的焦点管理问题吗?
clojurescript - 在 Reagent 或 Re-Frame 应用程序中处理动态类的惯用方式
在 JavaScript 中,处理动态类的常用方法是使用类名库。
我找不到 ClojureScript 的任何替代解决方案,而且似乎大多数人都可以使用内联 if 语句,(str ...)
例如:
在我看来,这似乎是脆弱而乏味的(参见空间处理)。
我希望这个功能可以像这样工作:
或者喜欢
当然,手动编写这样的函数应该不难,但我认为这应该已经以某种方式解决了。
clojurescript - Clojurescript re-frame:将焦点更改为新创建的元素
我正在构建一个带有文本输入字段列表的重新框架应用程序。我希望行为是当用户按下时RETURN
,会创建一个新行并将焦点放在新行上。change-focus
但是,当我尝试使用事件处理程序中的此调用将焦点更改到该新行时,我已成功创建新行:
(.focus (.getElementById js/document focus-element))
我收到一个错误:Cannot read property 'focus' of null
。
我认为这是因为视图尚未呈现新创建的行。使用重新框架将焦点更改为新元素的最佳方法是什么?
我应该将活动行放在我的状态原子中并在视图中呈现它吗?或者可能在视图被渲染后触发另一个事件?我想要一些输入。
ajax - 重新构建依赖于另一个 http event-fx 数据的 http event-fx
假设我需要小部件数据和小部件部件数据。我需要通过 http 请求检索小部件数据以获取其部件号。我使用这些部件号发出更多的 http 请求以获取部件数据。
使用https://github.com/Day8/re-frame-http-fx,它看起来像:
我将如何为我的页面初始化我的部件数据?我能想到的最直接的方法是包装get-widget
并get-widget-part
编写另一个处理程序,方法get-widget-then-widget-parts
是对小部件执行 http 请求,并在成功时获取该数据并检索部件数据。我的问题是它不是很可组合。我需要创建另一个处理程序。同时,我不能只是(dispatch [:foo/get-widget])
将结果输入(dispatch [:foo/get-widget-part])
(据我所知)。
clojure - 重新框架应用程序中没有呈现视图
这是一个简单的 re-frame 应用程序,我尝试根据 re-frame 的 github repo 中的现有示例项目创建它。但它只显示 html 文件中的内容。似乎没有发送任何事件。谁能指出我做错了什么?谢谢。
clojure - 谷歌图表 CLJS Clojure
我试图在谷歌图表中调整这个例子。为re-frame
框架,reagent
. 我想根据订阅创建一个实时图表。我用一个简单的计数器 =+-1 进行了测试。
我得到错误: Assert failed: Render must be a function, not nil
(ifn? render-fun)
。
clojurescript - ClojureScript Re-frame 订阅取消引用困境
以下方法最好的是什么?
外部订阅,提前取消引用
外部订阅,延迟 deref
内部订阅,提前取消引用
内部订阅,延迟 deref
当我使用外部订阅保持内部组件纯净时,我可能会得到许多需要通过通常不相关的父级的深层嵌套结构传递的参数。这很容易变得一团糟。
当我订阅内部组件时,它变得不纯,失去了易于测试的能力。
另外,我想知道早期和晚期解除引用之间是否有重要区别,除了reagent/atom
在测试后者时我必须通过。