React不能从组件中渲染数组
React can't render array from component
我有这个组件与一些菜单。这里有一些菜单项的数组迭代。我想把这个组件导入到另一个main
,但我收到这个错误- A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.
。当我删除这个数组迭代,并留下简单的链接,一切都很好。怎么了?
组件:
const LandingMenu = (props) => {
return (
props.data.map((element, _) =>
<Link class="link" href={ element.target }>{ element.name }</Link>
)
)
};
export default LandingMenu;
<LandingMenu data={LANDING_CONTENT.menu} />
React组件不能返回数组…它必须返回一个元素。
将输出包装在DIV中可能会工作得很好:
const LandingMenu = (props) => {
return (
<div>
{props.data.map((element, _) =>
<Link class="link" href={ element.target }>{ element.name }</Link>
)}
</div>
)
};
export default LandingMenu;
组件需要被包装在根元素中。如果它是另一个类中的辅助函数,那么您的符号就可以了。
所以你的LandingMenu需要看起来像这样:return (
<div>
{props.data.map((element, _) =>
<Link class="link" href={ element.target }>{ element.name }</Link>}
</div>
)
)
另一种解决方案是在当前使用LandingMenu
的任何组件中都有一个渲染辅助函数
//SomeComponent
renderHelperFunction(data){
return (
{data.map((element, _) =>
<Link class="link" href={ element.target }>{ element.name }</Link>}
)
)
render(){
return (...
{this.renderHelperFunction(this.props.data)}
...)
}
相关文章:
- 不能从angular2中的子组件指定父组件中的数组
- 从组件状态的数组中删除元素
- 将ember对象的数组从ember组件传递到模板
- 如何在cycle js中从JSON数组创建组件
- 使用数据数组创建多个类似组件
- 如何创建独立于数组更新的组件列表
- 访问要在 React Native Text 组件中显示的对象数组
- React:用CSS类标记数组中的活动组件
- 如何在 Vue.js 中保持可排序的数组和组件的顺序
- 使用 React 将数组导出为组件属性
- 如何使用组件从 vuejs 中获取纯数组
- 对React Native中从父组件传下来的props数组进行更改
- ReactJS中使用非子组件的子数组唯一键
- 聚合物网络组件数据绑定一个js对象/数组
- 如何访问foreach中Knockout组件中的数组成员
- React不能从组件中渲染数组
- Angular2 -在路由和渲染组件之前,通过service获取数组
- #每个循环不检测组件中定义的数组
- 从react组件'数组类型状态属性弹出的正确方式
- Mithril.js:为什么“组件模板必须返回一个虚拟元素,而不是数组、字符串等”?的意思