如何对 Reflex Dynamic 内的值进行分支?

2023-12-09

在最简单的情况下,假设我有一个Dynamic t Bool,当值为 true 时,我希望存在一个空 div,当值为 false 时,我不希望存在任何 dom 元素。

更一般地说,如果我有一个Dynamic t (Either MyA MyB),并且我有知道如何渲染给定的函数Dynamic t MyA or a Dynamic t MyB,如何调用适当的函数来渲染?


如果您需要切换小部件,您可能需要以下之一:

dyn :: MonadWidget t m => Dynamic t (m a) -> m (Event t a) Source

or

widgetHold :: MonadWidget t m => m a -> Event t (m a) -> m (Dynamic t a)

既然你提到你手头有 Dynamic,我们将使用dyn:

app = do
  switched <- button "Alternate!"
  flag <- foldDyn ($) False (not <$ switched) -- just to have some Dynamic t Bool
  let w = myWidget <$> flag
  void $ dyn w

myWidget :: MonadWidget t m => Bool -> m ()
myWidget False = blank
myWidget True = el "div" $ blank

基本规则是,由于反射的高阶性质,如果你想交换某些东西,你需要有事件/动态来产生一个小部件作为值。这就是为什么dyn takes Dynamic t (m a)作为它的参数(并且适当地,widgetHold takes Event t (m a)。这就是我们绘制地图的原因Dynamic t Bool拥有一个以我们的小部件构建操作作为值的动态。

值得一提的是,dynamic/widgetHold 都不执行 virtual dom/diffing 来加速渲染。通过反射,您可以更明确地了解更新内容(动态/事件文本可以直接影响节点文本,而无需重新渲染整个节点),您应该利用这一点。如果没有,那么大部分页面将被交换,并且可能会产生显着的性能影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对 Reflex Dynamic 内的值进行分支? 的相关文章

  • 对元组列表进行排序的函数 - Haskell

    抱歉 这个简单的问题只是我对 haskell 非常陌生 我正在尝试编写一个函数 order 它将对另一个函数 Frequency 生成的元组列表进行排序 频率计算列表中不同元素的数量 a给出一个这样的结果 比如 gt 频率 aabbbccc
  • 反应性香蕉时间延迟

    我已经查阅了文档反应香蕉 http hackage haskell org package reactive banana 而且我找不到指定明确时间延迟的方法 举例来说 我想采取Event t a并将其所有发生的事件移至未来 1 秒 或获取
  • 如何处理“恐慌:不可能的事情发生了”并在 Haskell 中继续

    我有以下代码 它使用 GHC API 加载模块并获取表达式的类型 typeObjects String gt String gt IO Type typeObjects modules objects do defaultErrorHand
  • Haskell 中的类型化抽象语法和 DSL 设计

    我正在 Haskell 中设计 DSL 我想要进行赋值操作 像这样的东西 下面的代码只是为了在有限的上下文中解释我的问题 我没有类型检查 Stmt 类型 data Stmt forall a Assign String Exp a Assi
  • 使用 Haskell 将函数注入到 Java .class 文件中

    我使用 Haskell 编写了一个 Java 字节码解析器 它工作得很好 然而下一步让我完全难住了 我的 Haskell 程序需要修改 class 文件 以便在执行时 Java 程序打印 输入 此处的方法名称 在执行方法之前 并且 退出 此
  • 地图不是接受一个函数而列表返回一个列表吗?

    map2 List a gt b gt c gt a gt b gt c map2 List f map2 List f a as bs map f a bs map2 List f as bs 这是我的讲座中的一个示例 它尝试将二元函数应
  • 简单的秒差距示例会产生类型错误

    我正在尝试编译这个简单的秒差距代码 import Text Parsec simple letter 但我不断收到此错误 No instance for Stream s0 m0 Char arising from a use of let
  • 动态加载编译的 Haskell 模块 - GHC 7.6

    我正在尝试使用 GHC API 动态编译和加载 Haskell 模块 我知道 API 从一个版本到另一个版本波动很大 所以我专门谈论 GHC 7 6 我尝试在 MacOS 和 Linux 上运行相同的代码 在这两种情况下 插件模块都可以正常
  • 为什么我不能将 Int 类型与 a 类型匹配

    哈斯克尔新手在这里 我在这里尝试做的事情的一个过于简单的例子 test Int gt a test i i Couldn t match expected type a with actual type Int a is a rigid t
  • Haskell:从后面访问列表

    今天我开始学习Haskell 我对函数式语言有点陌生 而且我非常喜欢 Haskell 然而 我有一个关于它的设计的问题困扰着我 从我到目前为止的理解来看 访问列表后面的元素似乎比访问前面的元素要复杂得多 类似于xs x where xs a
  • 如何构造 Network.HTTP.Conduit.Request 对象?

    试图构建一个Request with 网络 HTTP 管道 http hackage haskell org packages archive http conduit 1 1 0 1 doc html Network HTTP Condu
  • 有 Haskell 日期库吗?

    Haskell 中是否有一个函数允许我输入日期的组成部分 如字符串表示形式或日月年组成部分 我可以从中获取信息 如星期几 一个月中的天等 我在网上查了一下 看起来有很多自定义库 但我希望 ghci 10 6 4 的标准前奏库中有一个没有很好
  • haskell复制目录的方法是什么

    我发现自己用 Haskell 编写越来越多的脚本 但在某些情况下 我真的不确定如何 正确 地做到这一点 例如递归地复制目录 a la unixcp r 由于我主要使用 Linux 和 Mac OS 所以我通常会作弊 import Syste
  • 计算出类型索引的自由 monad 的细节

    我一直在使用免费的 monad 来构建 DSL 作为语言的一部分 有一个input命令 目标是在类型级别反映输入原语期望的类型 以提高安全性 例如 我希望能够编写以下程序 concat Action String String concat
  • 如何计算函数被调用的次数,FP方式

    我目前正在通过SICP http mitpress mit edu sicp 与哈斯克尔 练习 1 15 询问一个函数被调用了多少次 这个想法可能是您应该使用替换方法 但我想知道如何在代码中执行此操作 在命令式语言中 我们可以保留一个全局变
  • Haskell 中存在量化值的列表

    我想知道为什么这段代码不进行类型检查 LANGUAGE ScopedTypeVariables Rank2Types RankNTypes OPTIONS fglasgow exts module Main where foo forall
  • 在 Haskell 中使用 Maybe 类型

    我正在尝试利用 Haskell 中的 Maybe 类型 我有一个查找返回 Maybe 的键 值元组 如何访问 Maybe 包装的数据 例如 我想将 Maybe 包含的整数与另一个整数相加 或者 您可以进行模式匹配 case maybeVal
  • 为什么在 haskell 中不带括号不可能进行负数相乘

    乘法5 3在 haskell gchi 中给了我一个错误 但乘以5 3 工作正常 为什么需要括号 ghci GHCi version 7 4 1 http www haskell org ghc for help Loading packa
  • 自动函子实例

    给定以下代数类型 ghci gt data Foo a Foo a 然后我实例化其中之一 ghci gt let f Foo foo 最后 我想打电话给fmap将函数应用为 a gt b gt Foo a gt Foo b ghci gt
  • 带边界的 haskell 列表数据类型

    我有以下类型定义来表示卡片 data Suit Hearts Spades Diamonds Clubs data Rank Numeric Integer Jack Queen King Ace data Card Card Rank S

随机推荐

  • ActiveRecord 在日期字段上按年、日或月查找

    我有一个具有日期属性的 ActiveRecord 模型 是否可以利用该日期属性按年 日和月查找 Model find by year 2012 Model find by month 12 Model find by day 1 或者是否可
  • 如何禁用 Kubernetes pod 的交互式会话 (kubectl exec)

    我需要禁用对 Kubernetes pod 的交互式会话 ssh 访问 它通过 RBAC 系统和 pods exec 子资源进行控制 您可以根据需要设置策略
  • 什么是合成构造函数?

    它是什么 我有一个模糊的理解 合成构造函数是由编译器隐式创建的构造函数 它也初始化其成员类对象 但可能会也可能不会满足程序实现的需要 这个定义正确吗 在什么情况下它会被合成 什么情况下不会 下面的文章比我以前能更好地回答你的问题 我引用了这
  • 在armv8架构中将半字值存储到堆栈内存中时出现总线错误?

    我有两个寄存器 w1 和 w2 我想将它们存储在堆栈上 我想将完整的单词w1和w2的一半存储到堆栈中 这是我的实现 STR w1 sp 8 STRH w2 sp 8 编译时 第一条指令运行良好 但第二条指令引发总线错误 我知道这是一些对齐问
  • Sed 和重命名文件

    我的目录中有大量文件 每个文件都有不同的名称和长度 类似的医生 218 级 1080p 30fps H264 128kbit AAC mp4另一种类型 Class 223 1080p 30fps H264 128kbit AAC mp4 e
  • 在解析大写月份名称的日期时,我得到 java.time.format.DateTimeParseException [重复]

    这个问题在这里已经有答案了 我有几行代码 如下所示 DateTimeFormatter formatter DateTimeFormatter ofPattern dd MMM yy formatter formatter withLoca
  • 替换 dask 数据框分区

    我可以将 dask 数据帧分区替换为我单独创建的另一个具有相同行数和相同结构的 dask 数据帧分区吗 如果是 怎么办 是否可以使用不同的行数 您可以使用以下命令将分区添加到 Dask 数据帧的开头或结尾dd concat功能 您可以通过切
  • 仅返回匹配的多值字段

    假设一个具有名称的多值 存储和索引字段comment 执行搜索时 我只想返回以下值comment其中包含匹配项 例如 当搜索 gold 而不是得到这个结果时
  • Django异步更新单页模板

    我有一个带有此函数的 django 视图来获取模板的数据 def get context data self kwargs context super MyView self get context data kwargs context
  • Chrome 问题 - 嵌入 Windows 媒体播放器

    我遇到问题了 我在页面中嵌入了 WMP 并且需要对播放器隐藏按钮 我可以在 IE 和 FF 中隐藏它们 但在 Google Chrome 中却做不到 这是代码
  • Google Sheets - 使用 UNIQUE 函数并显示为一行

    在 Google 表格中 在列上使用 UNIQUE 会导致所有唯一值显示在列中 有没有办法让所有值显示在行而不是列中 尝试这个 UNIQUE FLATTEN A1 D1
  • CakePHP 发送电子邮件

    我在使用 CakePHP 发送邮件时遇到问题 一切都很顺利 但我没有收到任何一封邮件 我厌倦了发送到两封不同的电子邮件 WebsitesController php App uses AppController Controller App
  • 仅返回字符串中的数字 0-9

    我需要一个可以在 VBScript 和 NET 中使用的正则表达式 它仅返回在字符串中找到的数字 例如 以下任何 字符串 应仅返回1231231234 123 123 1234 123 123 1234 123 123 1234 123 1
  • 当充气之前充气的片段时应用程序崩溃

    应用程序加载和查看EventFragment java显示地图 当您单击另一个选项卡片段时 它会很好地加载该片段 当您返回到第一个选项卡 地图 时 它会崩溃并出现以下错误 07 03 14 13 54 640 E AndroidRuntim
  • 取消异步httpweb请求

    我正在制作一个应用程序 它将制作多个 HttpWebRequest 对象并通过下载我的 htmlhttpRequest BeginGetResponse方法 我回来了IAsyncResult并将其存储在本地 以便我可以随时取消请求 但我不确
  • 安装重新缩进Python

    我在使用 Notepad 进行 Python 缩进时遇到很多问题 为了解决这个问题 我尝试安装Python redent模块 但我不知道如何使用它 如果有人成功了请告诉我 这是我尝试过的步骤 1 使用简易安装我尝试安装该软件包 C Pyth
  • Java - 每秒重新绘制组件?

    我想每秒重新绘制组件 但它不起作用 我正在尝试的是 try while true Thread currentThread sleep 1000 gc cb next gc repaint catch Exception ie 我建议使用j
  • 使用 FrontDoor 通过 Azure AD redirect_uri 进行身份验证不正确

    我有一个 Azure FrontDoor 设置作为在端口 5443 上运行的容器和自定义域之间的反向代理 负载均衡器 这样做的目的是为用户提供一个标准的地址 IE container azurecontainer io 3443 被指向ht
  • 如何让 ASP.Net Web API 和 OData 将字符串值绑定为键?

    我正在浏览来自 asp net 的简短 Web Api OData 教程 http www asp net web api overview odata support in aspnet web api getting started w
  • 如何对 Reflex Dynamic 内的值进行分支?

    在最简单的情况下 假设我有一个Dynamic t Bool 当值为 true 时 我希望存在一个空 div 当值为 false 时 我不希望存在任何 dom 元素 更一般地说 如果我有一个Dynamic t Either MyA MyB 并