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

reactjs - 解决 onClick 事件在 material-ui 中的“Enter Key”按下时被触发两次(错误)

我正在使用cljs-react-material-uifrom re-frame

当我单击 aflat-button时,它会按预期触发:on-click事件。但是,当我按 Tab 键聚焦按钮然后按返回时,似乎触发了两次事件。这让我的应用程序感到困惑,因为它的有限状态机已经进入下一个状态,在这种状态下(重复的)事件没有意义。

我是否需要明确地消除此事件?我本来希望 UI 框架能够几乎相同地处理单击和返回键。

0 投票
1 回答
438 浏览

javascript - Leaflet Popup 中的试剂组件 - 自定义 Leaflet Popup

我正在使用 Re-Frame 和 Reagent 构建 Clojurescript 前端。目前前端仅包含使用 Leaflet 创建的地图。单击地图时,会在该位置设置一个新标记。单击任何这些标记时,将显示一个弹出窗口。

到目前为止,一切都很好。现在的问题是我想准确地调整这个 Leaflet 弹出窗口以包含一个删除按钮,然后应该使用它再次删除标记。这是我遇到问题的地方。代码如下所示(归结为最低限度):

这也行得通。但我不想将内联 HTML 写成字符串。我想用打嗝语法编写弹出窗口的内容,然后以某种方式将其传递给“.bindPopup”。我想这样做,因为单击时将包含一些 Clojurescript,如果我只是将 HTML 内联写为字符串,我无法将其放入其中。例如,我尝试过:
(.bindPopup (reagent.dom.server/render-to-string [:div "Hello World"]))
这也可以正常工作,但是我在那里的任何点击都会在翻译中丢失。我知道这不起作用(请参阅onClick 处理程序未注册 ReactDOMServer.renderToStringReact.js 服务器端渲染和事件处理程序)。

因此,我想找到另一种将我的 Reagent(仅包装 React)组件传递给 Leaflet 的方法,以便它满足弹出窗口的界面
setContent(<String|HTMLElement|Function> htmlContent):(https://leafletjs.com/reference-1.3.2.html#popup-setcontent )

所以基本上我想将组件呈现为 HTMLElement 而不是直接呈现到虚拟 DOM 中。我想调用试剂渲染函数并且不将结果渲染到应用程序中,而是将其作为可以传递给 Leaflet 的 HTMLElement 返回。

TLDR:如何将 Reagent 组件呈现为 HTML 元素,包括其点击功能,以便我可以将其交给 Leaflet 弹出窗口?

任何帮助表示赞赏。

0 投票
0 回答
170 浏览

clojurescript - 在 Re-frame 中挂载初始 ajax 数据

我在 re-frame 文档中看到了 Ajax 调用的示例:

我可以在主函数中调用事件吗:

加载初始值?我需要加载初始值,然后渲染视图。

更新

我使用这个功能做到了:

0 投票
1 回答
370 浏览

clojurescript - re-frame:在嵌套向量中添加新的地图元素

我的“db”中有这个结构(有序映射),关键字“:questions”:

我可以在事件处理程序“re-frame/reg-event-db”中添加一个新问题,并添加:

但我不知道如何在 ":answers" 键中添加地图。此外,我担心每次添加新答案时都会渲染所有问题。

我阅读了有关“路径”拦截器(一种“更新输入”)的信息,但我找不到有关如何使用它的示例。

0 投票
3 回答
514 浏览

clojurescript - re-frame:调度后重置原子

我有这个表格:

调度后如何将@new-question 重置为“”(空字符串)?

0 投票
1 回答
376 浏览

clojurescript - 在 re-frame 应用程序中使用 rc-animate 对 antizer 表进行动画处理

我正在尝试在http://react-component.github.io/table/examples/animation.html中重新创建示例,以将动画添加到重新框架应用程序中的表中。该表是使用antizer呈现的,它是Ant Design react 组件的ClojureScript 库。对于动画,我尝试使用rc-animate(如示例中所示),它是一个 JavaScript 库。为了集成 rc-animate,我按照官方 Webpack指南创建了一个src/js/index.js文件:

project.clj的是:

在我views.cljs的尝试中,我尝试像这样渲染表格:

我完全不确定

相当于示例中的行

该表正确呈现,但是当我尝试删除一行时,它失败并出现以下错误跟踪:

还表明:

我是 Clojure 初学者,对 React 的了解更少;这是我经过一周的尝试后最终到达的地方,但现在我觉得卡住了。我已将我的项目上传到github,供任何想尝试的人使用。

0 投票
2 回答
162 浏览

clojure - 全栈 Clojure:如何在开发过程中同时获取浏览器 REPL 和服务器 REPL

我正在开发我的第一个全栈 Clojure 应用程序。我已经设法在 Linux Mint 中正常工作:

  • 莱宁根
  • figwheel + garden[auto] = 带有热代码和 CSS 重载的交互式 SPA 开发
  • leiningen REPL for Server with rebel-readline,在 REPL 启动服务器,并将 SPA 提供给浏览器
  • leiningen uberjar 编译,jar 文件运行,SPA 由服务器服务

我不知道该怎么做是设置一个开发环境,允许我同时拥有一个服务器 REPL 和一个 SPA REPL,这样我就可以集成 sente 以支持 websocket 并监控重新构建应用程序- SPA REPL 中的数据库状态。我想,理想情况下,我想让 figwheel + gargen[auto] 与 SPA 一起运行,通过 sente websocket 与服务器通信。

0 投票
1 回答
2251 浏览

clojure - Re-frame 中的 reg-event-db、reg-event-fx 和 reg-event-ctx 有什么区别?

Re-frame中有3 个事件 fns,我可以对和做同样的事情。reg-event-dbreg-event-fx

和之间reg-event-db的主要区别是什么?reg-event-fxreg-event-ctx

我什么时候应该使用reg-event-fxover reg-event-db,反之亦然。

0 投票
1 回答
260 浏览

clojurescript - 如何在 REPL 中的 re-frame 框架(clojurescript)中调度事件?

我正在使用无花果,我想从 REPL 手动调度事件。

例如,在我的应用程序连接到 REPL 之后

我收到以下错误“RuntimeException Invalid token: ::events/initialize-db”

我如何调度这些事件?以及如何在 REPL 中查看应用程序的状态?

0 投票
2 回答
138 浏览

clojurescript - 页面加载时未触发 defroute

我的routes.cljs文件中定义了应用程序路由,位于src/cljs/project/routes.cljs.

它被初始化为core.cljs

它被发送::events/set-active-panelevents.cljs

并且:active-panel订阅了subs.cljs

我订阅:active-panel了我的layout.cljs

@active-panelnil我第一次访问页面的时候。仅当我浏览页面时才调度面板。我知道这最初是有效的。我在我的提交中看不到任何可能破坏它的东西。

如何让我defroutes在页面加载以及通过网站导航时触发?