Mithril.js:"Component template must return a virtual element, not an array, string, etc."是什么意思?
Mithril.js: What does "Component template must return a virtual element, not an array, string, etc." mean?
第一次尝试mithril.js
,如果这是一个简单的问题,请见谅。我收到一条错误消息,
Component template must return a virtual element, not an array,
string, etc.
当我在另一个组件中嵌套一个 map()
派生组件时。
本质上,我试图创建一个类似于以下简化示例的布局,其中地址标签派生自 ctrl.list()
道具的 .map()
。
<Layout>
<Left/>
<Right>
<Address>
<Address>
</Right>
</Layout>
这是一个显示此内容的 jsfiddle。如果你自己挂载 "Right" 组件,它会很好地渲染。只有当该组件嵌套在它失败的另一个组件中时。我缺少什么,将来如何调试?
在 Mithril v0.2.X 中,嵌套组件(即一个组件在另一个组件中)不能 return 节点数组 1: 它必须 return 具有多个子节点的单个包装节点。
由于 Right
视图中的拼写错误,您的代码似乎意外违反了该规则:
return m('.right-col'),
ctrl.list().map(function(addr){
return m(Address, {addr: addr});
})
在伪代码中,这是 return {node}, [list]
,其中 {node}
被丢弃,视图 return 是展开的 [list]
- 这会触发错误。应该是:
return m('.right-col',
ctrl.list().map(function(addr){
return m(Address, {addr: addr});
})
)
1重写后的Mithril v1.X, where component views can return lists of nodes directly.
不会再这样了
第一次尝试mithril.js
,如果这是一个简单的问题,请见谅。我收到一条错误消息,
Component template must return a virtual element, not an array, string, etc.
当我在另一个组件中嵌套一个 map()
派生组件时。
本质上,我试图创建一个类似于以下简化示例的布局,其中地址标签派生自 ctrl.list()
道具的 .map()
。
<Layout>
<Left/>
<Right>
<Address>
<Address>
</Right>
</Layout>
这是一个显示此内容的 jsfiddle。如果你自己挂载 "Right" 组件,它会很好地渲染。只有当该组件嵌套在它失败的另一个组件中时。我缺少什么,将来如何调试?
在 Mithril v0.2.X 中,嵌套组件(即一个组件在另一个组件中)不能 return 节点数组 1: 它必须 return 具有多个子节点的单个包装节点。
由于 Right
视图中的拼写错误,您的代码似乎意外违反了该规则:
return m('.right-col'),
ctrl.list().map(function(addr){
return m(Address, {addr: addr});
})
在伪代码中,这是 return {node}, [list]
,其中 {node}
被丢弃,视图 return 是展开的 [list]
- 这会触发错误。应该是:
return m('.right-col',
ctrl.list().map(function(addr){
return m(Address, {addr: addr});
})
)
1重写后的Mithril v1.X, where component views can return lists of nodes directly.
不会再这样了