问题标签 [elm-architecture]

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 回答
1744 浏览

elm - 如何从 Elm 中的组件调用父消息?

我有一个模态窗口,可以在其中显示不同的组件。每个组件都有自己的更新程序和消息,但我想在它们之间共享一个关闭按钮。

因此我不能直接从我的孩子那里调用“CloseModal”——Elm 不允许我调用其他人的消息。我有哪些选择?


我以为我可以调用“Modal.Update.update Modal.Messages.CloseModal”,但在我的组件内部我只有一个状态块。所以这不是一个选择。

然后我找到了一种将消息从父母传递给孩子的方法,但它并不能帮助我以其他方式传递消息。或者给兄弟姐妹。

0 投票
3 回答
1331 浏览

elm - `Cmd msg` 是什么意思?

我正在尝试使用端口将 URL 传递给 Javascript,以便将用户重定向到另一个页面。我写了一个port module包含我的项目所需的所有端口:

然后,我将它导入到我的 Elm 文件中:

但是编译器不喜欢它:

所以我将端口定义移动到主文件:

但编译器仍然不同意:

所以我去看了那个特殊的格式,port check : String -> Cmd msg. 我不明白这是msg从哪里来的,所以我去检查了代码,我仍然不明白那行是什么意思。

从哪里来msg?是什么type Cmd msg = Cmd意思?提前致谢。

0 投票
2 回答
5497 浏览

elm - Elm - 把 Msg 变成 Cmd Msg

我正在尝试从elm-lang 教程中修改一个简单的应用程序,以首先更新模型,然后触发另一个更新。

这在编译器中失败,因为 NewTopic 分支:

所以我的 Msg 需要输入 Cmd Msg。我怎样才能把“我的消息”变成一个 Cmd 消息?

注意:我知道有一种更简单的方法可以进行这种更改,但我试图从根本上理解 Elm

0 投票
2 回答
758 浏览

elm - 为什么 Elm 架构被称为 TEA?

TEA在网络上的很多地方都看到过这个首字母缩写词(?!)——意思是榆树架构——但我不明白每个首字母代表什么。谢谢。

0 投票
1 回答
2346 浏览

elm - elm架构中如何处理多个订阅

我正在阅读榆树指南。

在效果子章节中,有一个带有时间订阅的示例

以及一个处理 Web-Sockets-subscriptions 的示例

但在这些示例中,只有一个订阅。我如何处理多个订阅?

0 投票
1 回答
112 浏览

elm - `Msg` 类型如何在 Elm 中分成多种类型?

在 Elm 中使用 model 和 update 的标准方法是定义 Model 和 Msg 类型,以及 update 函数:

当应用程序增长时,所有这些类型和功能都会变得更加复杂。我想通过以下方式将它们分开:

然后,我想分别处理所有这些(我知道该怎么做)。

不过,我的视图功能有问题。我将我的观点定义如下:

问题是,view1 的结果是Html Msg1,而视图函数需要Html Msg

有没有办法将结果从 转换Html Msg1Html Msg

0 投票
2 回答
195 浏览

architecture - 一个页面如何发出消息以导航到 Elm 中的另一个页面?

这是我的 Elm 应用程序当前的结构:

类型.榆树:

登录.elm:

我坚持以下看似相互竞争的要求:

  • 试图保持页面彼此相当独立,它们MsgModel类型可以独立推理
  • 使页面知道彼此的存在(在类型级别),以便它们的视图/更新功能可以发出NavigationStart page消息以在彼此之间导航。

在 Elm 中实现这一目标的最佳方法是什么?

0 投票
3 回答
490 浏览

elm - Elm 中的序列 Http.get

下面我有一个button尝试加载远程内容...

这是一个有效的 Elm 程序,只有一个小问题:API 不允许我按字符串搜索。这是不允许

但是,这允许的

所以我必须获取一个作者来获取他/她id然后我可以使用作者的 id 获取帖子......

如何在下一个请求之后对一个请求进行排序?理想情况下,我想将作者缓存在模型中的某个位置,因此我们只请求我们以前从未见过的作者。

0 投票
1 回答
111 浏览

types - 在 Elm 中使用 NoMap 在初始化时使用 http 请求映射 Msg

我正在构建我的第一个 Elm 应用程序,并根据以下来源对其进行构建:

我如何构建 elm 应用程序

以领域为重点的 NoMap 方法

这意味着我将我的Msg类型从我的主要函数映射Types.elm到我的子函数。做一个简单的onClick功能时看起来像这样

onClick (MsgForPieChart <| SelectSlice <| sliceModel.points)

现在我想在 init 上获取一些数据以供查看。

onClick我尝试遵循与简单函数相同的方法

我的主要类型如下所示:

http对于请求,我的子函数类型看起来像这样

但无论我尝试什么,我都会不断收到这样的类型错误,Http.send或者Task我尝试的任何方法

但它是:

我的更新功能的结构如下:

那么我如何http在初始化时为我的子函数获取请求,该函数使用 NoMap 模式进行组合Msg

0 投票
3 回答
666 浏览

elm - 在 Elm 架构中编写程序

假设我想创建一个包含两个组件的网页,比如 aNavbar和 a Body。这两个组件互不交互,可以独立开发。所以,我有两个 elm 文件,每个文件都包含以下组件:

假设它们都工作正常,我们如何组合它们来制作一个同时具有这两个组件的程序?

我试着写这样的东西:

当我尝试编写这个更新函数时,上面的内容很快变得很难看。特别是,一旦我从Navbar.updateor中提取出 Cmd 的更新函数中的 Msg Body.update,我如何提取它们并将它们再次反馈给这些函数?此外,上面的视图函数看起来并不特别地道。

解决此问题的 elm-architecture 推荐方法是什么?这种模式在 elm-architecture 中是惯用的吗?