Task.perform 期望第三个参数是不同的类型

2024-03-06

我正在尝试将 Elm 教程改编为我自己的小项目,但我在使用我提供的 Json.Decoder 时遇到了麻烦。

我的代码如下所示:

type Msg
    = RetrieveComments
    | FetchSucceed String
    | FetchFail Http.Error

update : Msg -> Model -> ( Model, Cmd Msg)
update msg model =
    case msg of
        RetrieveComments ->
            (model, retrieveComments)
        FetchSucceed whatever ->
            (model, Cmd.none)
        FetchFail error ->
            (model, Cmd.none)

retrieveComments : Cmd Msg
retrieveComments =
    let
        url = "/ReactTutorial/comments.json"
    in
        Task.perform FetchFail FetchSucceed (Http.get commentsCollectionDecoder url)

commentsCollectionDecoder : Decode.Decoder (List Comment.Model)
commentsCollectionDecoder =
    Decode.list commentDecoder

commentDecoder : Decode.Decoder Comment.Model
commentDecoder =
    Decode.object2 Comment.Model
        ("author" := Decode.string)
        ("content" := Decode.string)

该模型只是一个包含两个字段的记录,author and content.

我收到的错误消息是这样的:

The 3rd argument to function `perform` is causing a mismatch.

44|         Task.perform FetchFail FetchSucceed (Http.get commentsCollectionDecoder url)
                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Function `perform` is expecting the 3rd argument to be:

    Task.Task Http.Error String

But it is:

    Task.Task Http.Error (List Comment.Model)

我想我找到了我的问题。

我定义的消息没有正确的类型。这FetchSucceed消息应该接受(List Comment.Model)而不是一个String。这意味着update函数的参数需要反映,并且模型将以不同的方式更新。

像这样的事情:

type Msg
    = RetrieveComments
    | FetchSucceed (List Comment.Model)
    | FetchFail Http.Error

update msg model =
    case msg of
        RetrieveComments ->
            (model, retrieveComments)
        FetchSucceed newComments ->
            ({ model | comments = newComments }, Cmd.none)
        FetchFail error ->
            (model, Cmd.none)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Task.perform 期望第三个参数是不同的类型 的相关文章

  • 高仿“饿了么”Vue项目(一)

    高仿 饿了么 Vue项目 一 当我们把Vue框架的概念过了一遍之后 要进一步提升 就要看看别人是怎么使用Vue框架来做项目了 在github上有不少好的Vue项目 我找到了其中的一个 并把它作为下一步学习的目标 链接地址 https git
  • 多维时序

    多维时序 MATLAB实现ELM极限学习机多维时序预测 股票价格预测 目录 多维时序 MATLAB实现ELM极限学习机多维时序预测 股票价格预测 效果一览 基本介绍 程序设计 结果输出 参考资料 效果一览 基本介绍
  • 将 Http 请求与其余更新集成

    我正在使用以下模型制作一个简单的 Elm 应用程序 type alias Model num Float str String list List Float serverResponse String 我正在遵循 Todo MVC 示例
  • 创建自定义键盘控件 [Elm]

    我正在尝试为 4 人游戏创建自定义键盘控件 现在 密钥是这样预先确定的 type Orient x Int y Int type GameInput space Bool delta Time so1 Orient so2 Orient s
  • 如何告诉 elm 外部 DOM 的变化

    我正在使用 elm 0 17 1 并尝试与 select2 javascript 库 版本 4 0 3 进行互操作 这是我的 Main elm port module Main exposing import Html exposing H
  • 长度示例中“List a”中的“a”是什么?

    我想知道在哪里可以找到有关 a 用在长度示例 http elm lang org examples length 似乎是某种类型 1 2 3 is a List Int 只能与整数列表一起使用的函数必须具有List Int在他们的类型签名中
  • 使用本地包

    我在本地目录中有一个 Elm 包 源代码 所有构建工件 我想从另一个 Elm 包中使用它 而不发布库 所以我的目录设置如下所示 my lib elm package json my app elm package json 首先 跑步elm
  • Elm - 文本区域选择范围消失

    I implemented a
  • JavaScript 中的函数响应式编程是否会导致侦听器引用出现更大问题?

    在 JavaScript 中 观察者模式经常被使用 其中有一件棘手的事情 那就是主体保留观察者的参考资料 他们需要清理 对于常规应用程序 我使用以下经验法则 如果主体的寿命短于 或等于 观察者 我可以这样做subject on event
  • 用于带有数据的 Union 类型的 Elm JSON 解码器

    我的 json 看起来像这样 name providerWithVal value example 或者像这样 name provider2 or name provider3 我的 Elm 联合类型定义如下 type Provider P
  • 如何在 Elm 中打印所选选项的索引?

    我有一个
  • 如何在 elm 中按索引获取列表项?

    我有一个清单 现在我想要第 n 项 在哈斯克尔我会使用 但我找不到它的榆树变体 Elm 添加了数组0 12 1 http elm lang org blog announce 0 12 1 elm 并且在 0 19 中对实现进行了大规模修改
  • Elm:Json 解码器时间戳到日期

    我正在尝试将时间戳 例如 1493287973015 从 JSON 转换为日期类型 到目前为止 我创建了这个自定义解码器 stringToDate Decoder String gt Decoder Date stringToDate de
  • 通过端口调用window.open

    我正在实施社交身份验证 当用户单击按钮时 我发送一条命令 以便我可以调用window open Looking at this call stack we can see that the port handler is called in
  • ELM QueryString 解析器无法编译

    我真的很想学习一些 ELM 但是我的思想在查询解析时崩溃了 我的想法是创建一个函数来按名称获取查询字符串值 例如 给定一个查询字符串 name Neuber像这样的函数getParam name 那会返回Neuber 但它在最基本的例子中失
  • elm 中的“<<”运算符是什么意思?

    以下代码取自榆树形式示例 http elm lang org edit examples Intermediate Form elm 第 122 行 什么是 lt lt 运算符的意思是 Field field Field defaultSt
  • Elm 中的序列 Http.get

    下面我有一个button尝试加载远程内容 import Post exposing Post import Html exposing import Html Events exposing import Http import Json
  • 如何向这个 elm 效果示例添加第二个骰子?

    我是 Elm 新手 一直在查看以下示例 请注意 这是在较新的 0 17 架构下 其中 Action 现在是 Command http elm lang org examples random http elm lang org exampl
  • Elm 中的数组与列表

    我很惊讶地得知Array and ListElm 中有两种不同的类型 Array http package elm lang org packages elm lang core 4 0 1 Array List http package
  • 了解 Elm 中的通用联合类型

    我无法理解到底是什么Html msg类型是什么 或者它如何使用 我在 VirtualDom elm 中找到了这行代码 其中Html msg似乎是以下别名 type Node msg Node 这看起来像一个带有一个类型参数的通用联合类型 m

随机推荐

  • 具有多个引用的 postgresql cte 仅运行一次

    只是想知道 在 pgsql cte 中是否会创建临时表 并且每次加入查询时都不会重新执行 cte 下面是同一查询的 pgsql 和 sql server 版本 sql server 需要 6 秒 pgsql 只需要 3 秒 这是侥幸还是永远
  • 使用 D3.js 在矩形上显示文本

    I am developing Normalized stacked bar chart using d3 js and trying to append a text on rect It is getting appended when
  • 为什么启动应用程序时会看到双状态栏?

    当启动我的 iPhone 应用程序时 我同时看到 Default png 中的状态栏和操作系统的内置状态栏 而不仅仅是看到操作系统的状态栏 我做错了什么 将 Default png 的大小调整为 320x480 如果您的 Default p
  • 将 html 字符串拆分为 N 部分

    有没有人有一个使用 C 拆分 html 字符串 来自tinymce 编辑器 并将其拆分为 N 个部分的示例 我需要均匀地分割字符串而不分割单词 我正在考虑只拆分 html 并使用 HtmlAgilityPack 来尝试修复损坏的标签 虽然我
  • 将 AS3 代码放在舞台/MC 时间线上,就像 AS2 一样,而不是放在类中

    我知道 ActionScript 3 0 从一开始就被设计为一种主要面向对象的语言 使用它意味着 Flash 文档中的时间线代码更少甚至没有 我对 OOP 非常有经验 并且很乐意编写课程 然而 由于我主要使用 Flash 来制作动画 所以我
  • 从大照片生成图块 (iOs PhotoScroller)

    我正在研究WWDC 会议 104 掌握 UIScrollViews 我需要创建一个脚本或找到一个工具或编写一个脚本来从一些大的 jpg 照片生成 CATiledLayer 所需的图块 需要 1000 500 和 250 比例因子 并且生成的
  • 如何手动触发点击事件?

    我正在尝试以编程方式触发文档单击 我的测试组合显示在页面中的多个位置 我想在单击测试组合或触发文档单击时将它们全部隐藏 Component selector test comp template div stuff div and more
  • 传送 Wav 音频数据的 DirectShow 过滤器的媒体类型设置是否正确?

    我使用 Delphi 6 Pro 和 DSPACK DirectShow 组件库来创建一个 DirectShow 过滤器 该过滤器从自定义音频源提供 Wav 格式的数据 需要明确的是 我将原始 PCM 音频样本作为字节数据提供 不涉及 Wa
  • 有条件导入范围

    使用 Google Sheets 我想在同一文档中使用带条件的 IMPORTRANGE 将数据从一张工作表导入到另一张工作表 我尝试过但没有成功 IF IMPORTRANGE https URL Inc Database B2 B300 p
  • Magento 异常错误:无效方法 Mage_Catalog_Block_Product_View_Type_Simple::displayProductStockStatus()

    我尝试在我的 magento 系统上安装主题 当我尝试打开产品页面时 它向我显示错误 出于安全原因 默认情况下禁用异常打印 请帮我 错误 Invalid method Mage Catalog Block Product View Type
  • 强制 AVX 内在函数使用 SSE 指令

    不幸的是 我有一个 AMD 打桩机 cpu 它似乎对 AVX 指令有问题 使用 256 位 AVX 寄存器进行内存写入非常慢 测得的吞吐量比之前的型号 Bulldozer 慢 5 6 倍 比两次 128 位写入慢 8 9 倍 根据我自己的经
  • 如何在eclipse中生成构造函数

    我有一个类 A 和 B M 扩展 A 现在我想使用 eclipse 的代码生成选项创建 B 的构造函数 它接受 B 的所有字段的参数和设置值 我的意思是它还应该设置从 A 继承的字段 在eclipse中是否有生成此类代码的快捷方式 在编辑器
  • (int (*)[])var1 代表什么?

    我找到了这个示例代码 我尝试用谷歌搜索什么 int var1可以代表 但我没有得到有用的结果 include
  • 将直方图的条形以标签为中心对齐

    出于布局原因 我想将直方图条放置在标签的中心 这样条的中间位于标签的顶部 library ggplot2 df lt data frame x c 0 0 1 2 2 2 ggplot df aes x geom histogram bin
  • 我如何获取字节数组的前“n”个元素并将它们直接转换为字符串?

    我有一个由 1024 个元素组成的字节数组 我想将其分解为不同的字符串私有成员 例如 前 9 个字节用于名称 接下来的 12 个字节用于用户 ID 等 无需将整个字节数组转换为字符串 然后使用子字符串方法 有什么方法可以将数组中的一系列字节
  • 暂停反应本机博览会音频?

    我运行音频没有问题 但暂停它时遇到问题 如果有人可以提供帮助那就太好了 async function playMusic const soundObject new Audio Sound console log Being hit try
  • “参数类型‘C’可能不会存在足够长的时间”,当它不需要时

    我正在用 Rust 编写非常基本的人工智能系统 其主要组成部分有 Actions 可以由库用户实现 用于特定用途 Generic Context 它被传递给所有动作 并且只需要在动作执行期间存在 ActionsContainer 它 全局
  • Java 中的基数参数是什么?它是如何工作的?

    我理解该函数的基数Integer parseInt 是将字符串转换成的基数 用基数 基数 16 转换的 11 基数 10 不应该是B代替17 下面的代码根据课本打印17 public class Test public static voi
  • iOS显示tableview标题图像(视差效果)

    我正在尝试设置一个大图像 随着表格视图进一步拉低 可以显示更多信息 我知道我没有任何意义 它更容易显示我从 netbot 记录的一个例子 http vine co v bdKrALdOheD 请让我知道正确的术语是什么 我将更新标题 Upd
  • Task.perform 期望第三个参数是不同的类型

    我正在尝试将 Elm 教程改编为我自己的小项目 但我在使用我提供的 Json Decoder 时遇到了麻烦 我的代码如下所示 type Msg RetrieveComments FetchSucceed String FetchFail H