如何对 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 中找到最小列表确实很容易 foldl1 min 9 5 7 3 7 4 6 10 给我3 我更换了min with lt 测试列表是否已排序 foldl1 lt 9 5 7 3 7 4 6 10 我收到此错误消息 No
  • 我是否应该使用 GHC Haskell 扩展?

    当我学习 Haskell 时 我发现有很多语言扩展 http haskell org ghc docs latest html users guide ghc language features html在现实生活中使用的代码 作为初学者
  • 在 Haskell 中,如何将嵌套上下文中的函数“应用”到上下文中的值?

    nestedApply Applicative f Applicative g gt g f a gt b gt f a gt g f b 正如类型所示 如何获得 a gt b 应用于那个a在上下文中f 感谢帮助 这是关注类型很有帮助的情况
  • 绑定变量时 Haskell 中的无限循环

    下面的 Haskell 代码不会终止 有人可以解释一下为什么吗 谢谢 f let x 10 in let x x x in x 我认为解释器首先绑定 x 10 然后将 x x 计算为 100 并绑定 x 100 环境变为 x 100 那么整
  • Haskell:如何创建将函数应用于元组项的最通用函数

    这是一个个人练习 旨在更好地理解 Haskell 类型系统的局限性 我想创建最通用的函数 将某些函数应用于 2 条目元组中的每个条目 例如 applyToTuple fn a b fn a fn b 我试图让这个函数在以下每种情况下都起作用
  • yesod——密码保护临时站点

    我正在尝试设置 yesod 网络服务器的临时实例 我想知道是否有一些简单的方法可以使整个站点受到密码保护 具体来说 我希望能够提示那些导航到我的网站的人提供凭据 经过身份验证后 它应该像典型站点一样运行 但如果他们无法验证自己的身份 他们就
  • 为什么这会导致 Haskell Conduit 库内存泄漏?

    我有一个conduit https hackage haskell org package conduit管道处理长文件 我想每 1000 条记录为用户打印一份进度报告 所以我这样写 Every n records perform the
  • 算法 - 如何有效删除列表中的重复元素?

    有一个list L 它包含以下元素任意类型each 如何有效删除此类列表中的所有重复元素 必须保留订单 只需要一个算法 因此不允许导入任何外部库 相关问题 在Python中 从列表中删除重复项以使所有元素都是唯一的最快算法是什么在维持秩序的
  • Haskell 中的常量变量声明

    要声明常量变量 我可以在 Ruby 中执行以下操作 class COLOR RED 10 BLUE 20 GREEM 30 end COLOR RED回报10 COLOR BLUE回报20 等等 我如何在 Haskell 中实现这一点 我想
  • 'lens' 的阴谋集团依赖性解析失败

    我刚刚做了一个阴谋更新并尝试从 hackage 安装 lens 这给了我以下错误 cabal install j lens Resolving dependencies Configuring dlist 0 7 0 1
  • 如何获取常量内存中的统计数据

    我有一个函数 它会创建一些随机的数值结果 我知道 结果将是 a 小 a b 约 50 范围内的整数a b 我想创建一个执行上述函数 1000000 次的函数 并计算每个结果出现的频率 该函数使用随机生成器来生成结果 问题是 我不知道如何在常
  • 为什么haskell中的递归列表这么慢?

    我对 Haskell 很陌生 我在 Haskell 中定义了一个函数 febs Integral a gt a gt a febs n n lt 0 0 n 1 1 n 2 1 otherwise febs n 1 febs n 2 但是
  • 列表理解:制作列表列表

    你好 我正在尝试在 haskell 中创建一个函数 该函数接受一个数字 a 使用列表 即数字 将其一部分4它会创造 1 1 1 1 1 1 2 1 3 2 2 4 我正在考虑使用列表理解来创建列表 x 然后使用 1 n 中的数字创建更多列表
  • 处理许多不相关的类型时避免样板

    我正在编写处理以下值的代码语言 扩展 注释 语法 http hackage haskell org packages archive haskell src exts 1 1 4 doc html Language Haskell Exts
  • Haskell 中的相互递归求值器

    Update 我已经添加一个答案 https stackoverflow com questions 3524485 mutually recursive evaluator in haskell 4504200 4504200这描述了我的
  • 反应性香蕉时间延迟

    我已经查阅了文档反应香蕉 http hackage haskell org package reactive banana 而且我找不到指定明确时间延迟的方法 举例来说 我想采取Event t a并将其所有发生的事件移至未来 1 秒 或获取
  • Haskell 和 Idris 之间的区别:类型宇宙中运行时/编译时的反映

    因此 在 Idris 中 编写以下内容是完全有效的 item b Bool gt if b then Nat else List Nat item True 42 item False 1 2 3 cf https www youtube
  • 简单的秒差距示例会产生类型错误

    我正在尝试编译这个简单的秒差距代码 import Text Parsec simple letter 但我不断收到此错误 No instance for Stream s0 m0 Char arising from a use of let
  • Haskell 类型定义,=> 等

    我正在使用 Learn You a Haskell 来学习 Haskell 第 54 页上有一个 像这样执行 take Num i Ord i gt i gt a gt a take n n lt 0 take take n x xs x
  • Haskell 中实例声明的参数顺序切换

    我想进行实例声明 但自由类型变量不是最后一个变量 例如 我有一个类声明 class Poppable m where tryPop m a gt Maybe a m a 现在我想让 Q PSQ 优先级队列 成为 Poppable 的实例 具

随机推荐

  • 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 并