在秘银中聚合组件

Aggregating components in mithril

我的网页中有一个顶级组件,它聚合了其他组件。现在我需要一个组件只在按下按钮时呈现,即在我的视图模型中设置的标志。那么,我应该如何使用我的顶级组件呢? 我是否应该根据标志的值使用 if else 条件,而不是在顶层包含隐藏组件。

toplevel.view = {
    show_comp() ? [comp1, comp2, hiddencomp] : [comp1, comp2]
}

这里我根据 show_comp() 的值渲染隐藏组件。这是惯用的方法还是我可以做得更好? 此外,我在其中一个警告中发现,视图不应 return 虚拟 dom 对象,就像我在上面的代码中 returning 一样。那么,我会遇到上述代码的问题吗?

谢谢

你应该没事的。更清晰的表达方式是:

toplevel.view = {
    return [comp1, comp2, show_comp ? hiddencomp : null]
}

您提到的 'caveat' 没有多大意义 — 视图 必须 return 虚拟 DOM 对象才能呈现任何内容: 嵌套 组件必须 return 单个根节点(包含您选择的内容),并且不能直接 return 节点数组——但这对 top 没问题级别组件。