在React render()中的map()函数内部调用函数
这是我之前的问题的后续工作,但是如果我在其中的映射如何在React的render()方法中调用函数。
示例(此代码在extended的类内React.Component
):
getItemInfo(item){ return `${item.Something} ${item.SomethingElse}`
}
render() {
return (
<div className="someDiv">
{
collection.map(function (item) {
return <div> {item.Name} {this.getItemInfo(item)} </div>
})
}
</div>
);
}
无论我尝试什么,我总是最终得到“ this.getItemInfo()不是一个函数”。
我在函数内部进行了console.log
on操作,实际上是在引用Window对象,但是我似乎找不到改变它的方法。this``map()
我累了:
- 定义
getItemInfo
为函数getItemInfo(){..} this
作为第二个参数传递给我的地图函数- 调用
this.getItemInfo = this.getItemInfo.bind(this)
React的组件构造函数 - 打电话
.bind(this)
之后getItemInfo(item)
还有其他几件事…
没有工作。我对JavaScript的this
参考还很陌生,我似乎无法弄清楚。
我在这里阅读了一些与在内部使用此方法有关的答案,render()
但似乎没有一个对我有用。
回答:
collection.map(function (item) {
return {item.Name} {this.getItemInfo(item)}
})
因此,this
您内部function(item)
的范围不是React组件的范围。
如果您使用箭头功能() => {...}
代替,function() {...}
您将可以访问this
React.Component。
试试这个
collection.map((item) => ( <div> {item.Name} {this.getItemInfo.call(this, item)} </div>
))
要了解有关this
javascript
范围的更多信息,可以在这里阅读:http : //javascriptissexy.com/javascript-variable-scope-
and-hoisting-explained/
要了解箭头功能和的范围this
,请参阅https://developer.mozilla.org/zh-
CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions的
“对此不分开”部分
以上是 在React render()中的map()函数内部调用函数 的全部内容, 来源链接: utcz.com/qa/433000.html