问题标签 [om-next]

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 投票
2 回答
166 浏览

clojurescript - 如何通过连接查询获取 Om Next 中的所有数据?

在 Om Next 中,当有以下数据时:

您可以通过以下方式查询它:

要获取图表,请加入并从记录中data挖掘:cpu-usageperformance

我如何获得整个性能记录?

另一个潜在的查询是:

但它不能解决联接:

没有组件,因为这仅与数据和查询有关。这是来自练习号 2 和此处的查询:https ://awkay.github.io/om-tutorial/#! /om_tutorial.D_Queries 它使用 om/db->tree 来运行查询。

0 投票
1 回答
284 浏览

clojurescript - Om/Next 中的规范化和标识

我试图让我的头脑正常化,并认为我正在取得进展,但我再次跌跌撞撞,不确定我是否只是没有正确思考这个问题。如何规范当前用户的消息?

0 投票
0 回答
208 浏览

clojurescript - 从远程响应更新 Om-Next 应用程序状态

我对从远程更新应用程序状态有点困惑。我制作了一个模拟遥控器,它在https://github.com/omcljs/om/wiki/Components,-Identity-&-Normalization的修改代码延迟一段时间后做出响应。我只是简单地为年龄和点数设置随机值并调用(cb (rewrite ...)). 但是视图没有更新,虽然:person/by-nameident 引用的内容发生了变化,生成的值仅在下一次事务之后才呈现。这是更改后的代码:

在该代码中,send函数和points/incrementmutator 更改为教程。

我当然对应用程序状态更新有错误的期望。我在 om-next 代码中看到了对原子的监视,并认为缩进引用的键的更改将使组件排队以重新渲染。显然不是这样。我怎样才能获得来自远程的更新将被呈现?

0 投票
1 回答
83 浏览

clojurescript - 重用组件

有人可以帮助我更好地理解组件、查询等。我正在为一项看似微不足道的任务而苦苦挣扎,我需要一个带有参数化查询的组件。该组件的实例需要包含在父组件中,例如,我想要需要在一组孩子之间分配的不同种类的水果列表,每行将显示孩子的名字和一种水果的数量:

现在我需要让我们在另一个组件中说这个组件的两个实例

在哪里:params

第一种情况是:{:kind :apples}

第二种情况是:{:kind :oranges}

这应该呈现与此类似的 2 个列表:

0 投票
1 回答
237 浏览

clojurescript - 使用 Om Next 读取输入

我试图了解如何从om.next. 据我了解,我们不再受约束/不应该使用core.async.

举个小例子,考虑在文本框中书写并将其绑定到段落元素,以便您输入的文本自动出现在屏幕上。

这行不通。

  1. input表单中触发 onChange 事件时,引用的表达式不会从框中获取文本。

  2. 第一个突变触发并更新,但随后的突变不会触发。即使状态没有改变,查询是否应该从中读取字符串app-state并强制文本相同?

0 投票
1 回答
171 浏览

reactjs - 一种处理 React 应用程序中的依赖关系解析和乐观更新的方法

在对象具有许多复杂关系的架构中,有哪些可维护的方法来处理

  1. 解决依赖关系
  2. 乐观的更新

在反应应用程序中?

例如,给定这种类型的模式:

用户可能想要保存以下内容 ->

第一个问题:选择真实身份

上面的第一个问题是正确的id. 即为了让 secondFoo 保存,它需要知道 firstFoo 的实际 id。

为了解决这个问题,我们可以做出权衡,让客户端选择 id,使用类似 uuid 的东西。我看不出这有什么严重的错误,所以我们可以说这可行

第二个问题:按顺序保存

即使我们从前端确定了 id,服务器仍然需要按顺序接收这些保存请求。

这里的理由是后端必须保证被引用的任何 id 都是有效的。

我不确定解决这个问题的最佳方法是什么

目前想到的方法

  1. 有自定义操作,通过承诺进行协调

    save(biz).then(_ => save(Bar).then(_ => save(firstFoo)).then(_ => save(second)

这里的缺点是它相当复杂,并且这些组合的数量将继续增长

  1. 创建一个挂起/解析助手

    ```

2. 的问题是,如果我们忘记解决或添加到挂起,它很容易导致一堆错误。

潜在的解决方案

似乎 Relay 或 Om next 可以解决这些问题,但我想要一些功率较低的东西。也许可以与 redux 一起使用的东西,或者是我缺少的一些概念。

非常感谢的想法

0 投票
1 回答
106 浏览

reactjs - 全局事件和组件的本地状态

所以我有一个组件,假设当我点击它时,这应该会触发状态更改,例如:

现在,如果我想在单击文档的任意位置时“停用”它怎么办?我想我可以addEventListener通过将它连接到对象上来使用document,如下所示:

现在这是我想要的,但首先如果我有 200 个相同组件的实例,它将有 200 个事件侦听器,对吗?我猜这是不可取的,但没关系

但真正的问题是如何在设置状态时将组件的一个实例与另一个实例区分开来?我绝对不希望所有这些都“停用”,而只希望在其中触发单击事件处理程序的上下文

0 投票
1 回答
148 浏览

reactjs - 了解 Om 查询和 UI 组合

我一直在努力解决查询问题。假设我想要一个Root带有多个表视图的组件。

官方教程建议- 一种方法是使用没有查询的表视图组件。然后你可以通过 props 传递它需要使用的任何数据,这很好用。

但这是非常简单的情况。在非平凡的应用程序中,您可能希望TableView使用查询,因为在 UI 树下,您可能有一些复杂的 UI 组件结构 - 表头、页脚、行、单元格等。现在本教程建议使用一个问题:

然而,这仍然是一些简化的例子。所以假设我有:

在实际应用程序中,数据当然来自后端,Om 会将其粘贴到状态原子中(像往常一样)

现在我需要一个带有查询TableView的组件,该组件可以呈现其中任何一个(或本例中的任何序列)。所以你看我必须以某种方式告诉组件使用状态 atom 中其他地方的数据。并且查询应该是“动态的”,所以我可以使用多个渲染不同的数据。TableViewTableViewTableViews

假设我们对 Root 有这样的东西:

为了酿造,我省略了 Om.Next 接口

现在我有几个问题:

  • 查询应该如何Root
  • 我是否应该在TableView 其中进行参数化查询(我可能会在状态原子中指示数据的键)?或者我还能如何告诉一个TableView使用:numbers/odd而另一个使用:numbers/even
  • 如果我在其中使用参数化查询,TableView那么如何将参数从Rootto传递TableView
  • 也许我应该通过计算道具传递数据或链接到 TableView 的数据?
  • 那么我将如何使用om/get-query(如果子查询是参数化的)?
  • 读取方法会是什么样子?我需要在原子中“移动东西”read吗?听起来不是个好主意

有人可以给我看一个例子吗。非常感谢!。

0 投票
0 回答
156 浏览

om-next - 错误:组件路径不存在查询?

我正在尝试 om.next,尝试扩展Components, Identity & Normalization中给出的示例。

上面链接的示例中的代码包含两个列表,这些列表由状态中两个不同路径中的数据支持。该示例显示了数据的规范化如何使轻松更新不同视图中出现的规范化实体成为可能。在下面的代码中,我删除了下面示例中的第二个列表,因为无论如何都会出现这种行为。

工作示例

下面的示例有效并显示:

清单 A

  • 约翰,分数:4 +
  • 玛丽,积分:0 +
  • 鲍勃,积分:0 +

其中 + 是一个按钮,可以增加该人的分数。

问题:使用 AnotherRoot 作为根组件

但是,当我将最后一行中的 RootView 更改为 AnotherRoot 时,例如:

ui 仍然呈现,但是当按下按钮时,会出现以下错误:

错误来自(next.cljc:1916

我不明白这个错误。来自的查询AnotherRoot返回相同的查询RootView(但是,当您立即返回查询时会收到警告 - 这是有道理的),但协调器似乎无法弄清楚如何在应用程序时重新渲染组件-状态变化。

相关的依赖项应该是:

问题

在 om.next 中创建嵌套组件的一般方法是什么?

0 投票
1 回答
40 浏览

clojurescript - 在 Om Next 中解析外键

我试图理解 Om Next 中的规范化、标识和查询概念。每次我认为我拥有它时,我都会遇到一个似乎让我感到困惑的新情况。

我有一个返回以下数据的遥控器:

我已经像这样构建了我的组件:

这导致协调器对我的数据进行标准化,如下所示:

现在,关于我的问题。我想访问组件内的用户角色名称。我可以简单地(get-in @app-state [:role/by-id role :name])在 User 组件的渲染函数中做一些事情,但这似乎不是惯用的事情。

关于“用链接思考”的 Om Next 文档 似乎提到了我的解决方案:idents。我尝试在用户查询(如[:id :email [:role/by-id 1]])中使用它并且有效!但是,我似乎无法将实际的角色 ID 插入到身份中!我用查询参数尝试了非常复杂的事情,像这样将它插入到缩进中,但这一切似乎都是做作的。

这似乎是一个非常普遍的情况,应该存在一个体面的解决方案,但我似乎无法理解!

*EDIT 添加了 Root 组件