问题标签 [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.
clojure - 禁止重新帧重新渲染
是否可以抑制重新渲染?假设我在 state 上调度处理程序[:a]
和处理程序。这样:[:b]
db-0
最终状态相同,但进行了两次重新渲染。我不希望重新渲染中间状态db-1
。如有必要,重新渲染应该只在两者都应用之后[:a]
发生[:b]
。
react-native - 使用 ClojureScript、Re-natal 和 React-Native 禁用 RTL?
我正在基于 ClojureScript 和 React Native 的 renatal 平台上开发一个应用程序。我在Android平台上为我的应用程序禁用 RTL 时遇到问题。
这是在 react-native 中禁用 RTL 的代码,它工作得很好:
我认为这是 cljs 中的上述代码:
但是,我收到了这个错误:
“对象不是函数(评估'my-app.android.core.ReactNative.I18nManager())”
反应原生:“v0.50.3”
反应:“16.0.0”
重新帧:“0.9.2”
clojurescript:“1.9.542”
clojure:“1.9.0-alpha16”
electron - 尝试将 re-frame-10x(是 re-frame-trace)与 descjop(电子)项目一起使用
我正在尝试使用 re-frame 和电子的组合来建立一个项目,我想安装 re-frame-10x,这样我就可以轻松地观看 app-db 的某些部分。我之前已经将它与通过 google chrome 访问的常规 clojurescript/re-frame 项目一起使用,但尚未使用电子。我充满希望,因为我相信电子在引擎盖下使用与 chrome 基本相同的代码。
我按照 re-frame-10x github 页面上的设置说明进行操作,似乎一切正常。但是我无法调出 10x 窗口。
这是我的 project.clj 文件的一部分,特别是 clojurescript dev 构建:
请注意,有 2 个构建。(figwheel-status) 告诉我它正在监视和重新编译 dev-front。dev-main 包含指向 re-frame-10x 需要的 main 的指针。
Clojurescript 已升级到最新版本“1.10.64”,一切看起来都很好,在 repl 启动(使用来自 emacs 的插件)或 clojurescript repl 启动时没有错误消息。
仍然没有 re-frame-10x 窗口的迹象。当我在应用程序窗口中按 ctrl-h 时,它应该会出现。
在这条线下面是我在路上尝试过的东西。可能无关紧要。
回滚 clojure repl 消息,我发现它在 cljs repl 启动期间遇到了 re-frame-10x 的某种问题:
知道这意味着什么吗?我还没有使用 cljs.spec,但编译器似乎正在寻找它。
这是 project.clj 文件的一部分,其中包含 re-frame-10x 要求的修改,特别是相关 cljsbuild 部分的编译器部分中的闭包定义、预加载和到 main 的链接:
更新:
这有帮助: 没有这样的命名空间:clojurescript 项目设置中 的 clojure.spec.alpha 按照建议,我将 clojurescript 升级到具有所需规范内容的最新版本,并且当 cljs repl 启动时,repl 显示不同的错误:
这只是未找到的主要功能。project.clj 文件指定了 2 个开发版本,dev-front 和 dev-main。我在错误的部分中有 clojurescript 编译器选项。将它们移动到正确的部分可以消除错误,但是当我按 ctrl-h 时仍然不会出现 re-frame-10x 窗口。
semantic-ui - Clojurescript Semantic UI React Search 自定义渲染器
我正在尝试使用试剂/重新框架和语义 UI 在 Clojurescript 中实现搜索。Semantic-ui 使用渲染器来提供建议。此渲染器默认为图像、价格、标题、描述。因为我想对地理编码提出建议,所以我想列出地址。这是我得到的返回数据。我基本上想在建议中显示姓名、城市和邮政编码。
我写的代码没有显示任何结果。我尝试了很多,但我不知道如何查看组件以查看它的状态是否发生变化以及它是否存储结果。当我直接调用它时,订阅确实会给我返回结果。
我非常感谢以下方面的帮助:如何确定组件是否正确存储结果?如何编写一个渲染器来渲染所有的调试结果?
谢谢并恭祝安康!蒂莫
编辑:https ://gist.github.com/TimoKramer/7e93758afb81dcad985fafccc613153a 上的解决方案
clojurescript - 在最后一个调度链完成后调度
调度顺序应如下所示:
如果我们有这样的事情:
订单实际上看起来像:
我们无法保证在再次获得 bar 之前更新成功。:http/get-bar
可以作为 的一部分进行调度:http-success/update-foo
,但是硬编码会使事情变得不那么灵活。在我的特定用例中,我有一个在两个不同页面上使用的模态组件。单击保存时,两者都会发送到,[:http/update-foo]
但一个页面会跟进,
[:http/get-bar]
另一个页面会跟进[:http/get-baz]
,两者都需要foo
先完成更新。
clojurescript - 当函数返回其符号时,如何从 var 中提取元数据?
我使用re-frame with spec来验证app-db
,就像在todomvc示例中一样。
当用户输入无效条目时,我正在使用s/explain-data
(在重新帧拦截器中)返回一个命名导致验证失败problems
的 icate 的地图。:pred
这个谓词是一个类似的符号project.db/validation-function
。
我的验证函数有元数据,可以从 repl 使用:
函数定义(在project.db
命名空间中)如下所示:
问题是我无法弄清楚如何动态检索元数据(在project.events
命名空间中工作),例如:
我尝试了以下方法来代替what-goes-here?
:
symbol?
给true
str
给"project.db/validation-function"
meta
给nil
var
给出编译时错误“无法解析 var: p1__46744# in this context”
我认为问题在于我得到了一个符号,但我需要它所引用的 var,这是元数据所在的位置。
我试过使用宏,但真的不知道我在做什么。这是我能找到的最接近的讨论,但我无法解决。
帮助!
clojure - “警告:指定的主类在 jar 中不存在。” 在组合 Clojure + Clojurescript 重新框架项目中
我已经开发了 30 多个 Clojure 项目,但这是我第一次涉足 Clojurescript。我使用 re-frame 构建了一个 SPA,现在我正在尝试为它创建 uberjar。当我运行时lein uberjar
,我收到以下错误消息:
警告:指定的 Main-Class 在 jar 中不存在。它可能无法按预期执行。包含 main 方法的命名空间中可能缺少 gen-class 指令,或者命名空间尚未经过 AOT 编译。
project.clj
我已经设置了与其他 Clojure 项目类似的服务器端部分。
- 所有服务器端源文件都位于
src/clj
. - 所有 Clojurescript 源文件都位于
src/cljs
main
位于一个文件中server_core.clj
,该文件位于src/clj/ordering
.(:gen-class)
存在于server_core.clj
.-main
存在server_core.clj
于:(defn -main [& args] (main))
/li>project.clj
包括以下用于 uberjar 的指令:中的
/li>main
andtarget-path
指令project.clj
如下:
我想创建这个 uberjar 以包含在 Dockerfile 中,就像我对其他 Clojure 项目所做的那样。
更新:添加 project.clj
clojure - 获取错误未捕获错误:断言失败:反应是只读的;现场不允许
我是clojure和试剂的新手。我试图生成动态数量的复选框,其状态存储在应用程序状态中,这是一个像这样的字典列表
[{:checked false, :text "Sample text 1"} {:checked false, :text "Sample text 2"} {:checked false, :text "Sample text 3"}]
下面的函数预计会生成一个对应于应用程序db(db
)的指定索引的复选框。该功能可以完成工作,并且复选框是可点击的。
但是,当我单击任何复选框时,我会在浏览器控制台中收到此错误。
错误发生在swap!
。有人能指出我做错了什么吗?
db初始化部分如下:
我还有一个功能来检索数据库。我目前正在
clojurescript - 是否有像“路径”这样需要额外动态 ID 的重帧拦截器?
背景:re-frame todomvc 示例与大多数实现一样,将所有 todos 存储为本地存储中的一个大 blob。这意味着更改 todo 的事件可以有一个用于硬编码 [:todos] 路径的路径拦截器,然后 ->localStorage 拦截器盲目地将“一切”写入 todos 键,确信“一切”只是 todos。
问题:如果我有很多相同的场景,但为了提高效率希望将每个待办事项存储在不同的键下,通过(1)分配一个 UUID,然后(2)将键创建为“TODO-”+ uuid?然后,事件向量将包含正在更改的待办事项的 uuid。
我想我只需要一个像“path”这样的拦截器,它可以以某种方式查看事件以确定 uuid 并将“db”缩小到那个 todo,然后有一个 writer 拦截器了解如何从上下文中获取关键信息。这样的生物存在吗?
或者也许我只是写使用 reg-event-ctx 和自定义处理一切?
还是我错过了更惯用的解决方案?
clojure - 使用重新框架实现登录系统
我是重新构建的新手,不太确定如何使用它构建用户身份验证/授权系统。
根据我收集到的信息,我应该创建一个身份验证interceptor
并将我的身份验证逻辑放在:before
部分中,然后将拦截器注入到每个事件中reg-event-db
并且reg-event-fx
我想要保护。
我在正确的轨道上吗?