【发布时间】:2017-02-01 09:42:22
【问题描述】:
我正在尝试根据下面 sn-p 上的 const 元素根据按状态分组的对象数组来呈现列表。
我知道我可以在这里创建更小的组件,但我真的很想让我的 renderMethod 工作。
按照这个jsbin逻辑很好:
https://jsbin.com/cejiziyupa/edit?js,console
我不知道我对 react 和 JSX 做了什么。
有什么想法吗?
这是我在 codepen 上的代码 - http://codepen.io/vinicius5581/pen/rjJRvM?editors=0011
组件:
class MyComponent extends React.Component{
constructor(props){
super(props)
renderMethod().bind(this);
}
renderMethod(){
const elements = [
{ "id": 1, "label": "element1", "status": "status1"},
{ "id": 2, "label": "element2","status": "status2"},
{"id": 3, "label": "element3", "status": "status6"},
{ "id": 4, "label": "element3", "status": "status10"}
]
const groups = [
{ "name": "group1", "status" : ["status1", "status2", "status3", "status4"] },
{ "name": "group2", "status" : ["status5", "status6", "status7", "status8"] },
{ "name": "group3", "status" : ["status9", "status10"] }
]
return (
groups.map((group) => {
return(
console.log(group.name);
<h1>{group.name}</h1>
elements.filter((element) => group.status.includes(element.status)).map((element) =>{
return(
console.log(element.id);
<div>
<h1>{element.label}</h1>
<p>{element.status}</p>
</div>
)
})
)
})
)
}
render(){
return(
{this.renderMethod()}
)
}
}
ReactDOM.render(<MyComponent />, document.getElementById('root'));
HTML:
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
【问题讨论】:
-
首先,您的控制台日志导致语法错误,您不能在 JavaScript 中执行类似
return (a; b)的操作。此外,您的代码笔没有将 JSX 转换为 React 函数,因此浏览器无法将<div>理解为 JavaScript 语法。
标签: javascript reactjs jsx