Javascript 聚合mithril中的组件

Javascript 聚合mithril中的组件,javascript,model-view-controller,mithril.js,Javascript,Model View Controller,Mithril.js,我的网页中有一个顶级组件,它聚合了其他组件。现在我只需要一个组件在按下按钮时进行渲染,即在视图模型中设置一个标志。那么,我应该如何使用我的顶级组件呢? 我是否应该基于标志的值使用if-else条件,而不在顶层包含隐藏组件 toplevel.view = { show_comp() ? [comp1, comp2, hiddencomp] : [comp1, comp2] } 这里我根据show_comp()的值渲染隐藏组件。这是惯用的方法还是我可以做得更好? 另外,我在其中一个警告中发

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

toplevel.view = {
    show_comp() ? [comp1, comp2, hiddencomp] : [comp1, comp2]
}
这里我根据show_comp()的值渲染隐藏组件。这是惯用的方法还是我可以做得更好? 另外,我在其中一个警告中发现,视图不应该像我在上面的代码中返回的那样返回虚拟dom对象。那么,我将面临上述代码的问题吗


谢谢你

你应该很好。更明确的表达方式是:

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

您提到的“警告”没有多大意义-视图必须返回虚拟DOM对象才能呈现任何内容:嵌套组件必须返回单个根节点(包含您选择的内容),并且不能直接返回节点数组-但这对于顶级组件来说是可以的。

您应该可以。更明确的表达方式是:

toplevel.view = {
    return [comp1, comp2, show_comp ? hiddencomp : null]
}
您提到的“警告”没有多大意义-视图必须返回虚拟DOM对象才能呈现任何内容:嵌套组件必须返回单个根节点(包含您选择的内容),并且不能直接返回节点数组-但这对于顶级组件来说是好的