【发布时间】:2017-12-20 09:28:26
【问题描述】:
我正在尝试使用 li 上的 onClick 事件显示来自数组对象的数组,我正在使用箭头函数,但我发现我需要在 map 范围内绑定该函数,这是为什么呢?箭头函数的目的不就是为了消除绑定的需要吗?
class ListRecipes extends React.Component {
showIngredients = (item) => {
console.log(item.ingredients)
}
render() {
const { list } = this.props;
let Recipe = list.map((item, index) => {
let boundClick = this.showIngredients.bind(this, item);
return <li key={index} onClick={boundClick}> {item.recipeName} </li>
})
return (
<div>
<ul>
{Recipe}
</ul>
</div>
)
}
}
另外这段从上面返回新函数的代码有什么区别?
class ListRecipes extends React.Component {
showIngredients = (item) => (event) => {
console.log(item.ingredients)
}
render() {
const { list } = this.props;
let Recipe = list.map((item, index) => {
return <li key={index} onClick={this.showIngredients(item)}> {item.recipeName} </li>
})
return (
<div>
<ul>
{Recipe}
</ul>
</div>
)
}
}
【问题讨论】:
-
当你不绑定它会发生什么?没有绑定的代码到底长什么样子?
-
如果我不绑定它或返回一个新的事件函数它控制台。当页面加载但不是 onClick 时记录数组。 ` showIngredients = (item) => { console.log(item.ingredients) }`
onClick={this.showIngredients(item)}
标签: javascript reactjs ecmascript-6 arrow-functions