Mar*_*ane 1 javascript reactjs
试图创造一个反应但失败的李.错误是在map()附近,我得到的错误我没有定义,为什么?
const TodoItems = React.creatClass({
getInitialState() {
return {
items : [
{id:1,name:"Gym"},
{id:2,name:"Jump"},
{id:3,name:"Racing"}
]
}
},
renderItem(){
return(
<ul>
this.state.items.map(item,i =>
<li key={i}>item.name</li>
)
</ul>
)
},
render(){
return (
<renderItem />
)
}
})
Run Code Online (Sandbox Code Playgroud)
当你有一个箭头函数的多个参数时,你需要把()它们放在一起.所以:
this.state.items.map((item,i) =>
// ------------------^------^
<li key={i}>item.name</li>
)
Run Code Online (Sandbox Code Playgroud)
您的原始代码调用map与item作为第一个参数,和箭头功能以一个参数(i)作为它的第二个参数.
你也需要把item.name在{} 和把调用map的{}:
renderItem(){
return(
<ul>
{this.state.items.map((item,i) =>
<li key={i}>{item.name}</li>
)}
</ul>
)
Run Code Online (Sandbox Code Playgroud)
然后它工作:
const { Component } = React;
const { render } = ReactDOM;
const TodoItems = React.createClass({
getInitialState() {
return {
items : [
{id:1,name:"Gym"},
{id:2,name:"Jump"},
{id:3,name:"Racing"}
]
}
},
renderItem(){
return(
<ul>
{this.state.items.map((item,i) =>
<li key={i}>{item.name}</li>
)}
</ul>
)
},
render(){
return this.renderItem();
}
});
render(<TodoItems /> , document.getElementById('items'));Run Code Online (Sandbox Code Playgroud)
<div id="items"></div>
<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>Run Code Online (Sandbox Code Playgroud)
当我使用Babel的REPL来编译JSX并意识到我看到它"this.state.map((item,i) =>"是一个字符串时,我就清楚了.
| 归档时间: |
|
| 查看次数: |
2363 次 |
| 最近记录: |