当前位置: 首页 > 面试题库 >

在React render()中的map()函数内部调用函数

惠志
2023-03-14
问题内容

这是我之前的问题的后续工作,但是如果我在其中的映射如何在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.logon操作,实际上是在引用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() {...}您将可以访问thisReact.Component。

试试这个

collection.map((item) => (
   <div> {item.Name} {this.getItemInfo.call(this, item)} </div>
))

要了解有关thisjavascript
范围的更多信息,可以在这里阅读:http : //javascriptissexy.com/javascript-variable-scope-
and-hoisting-explained/

要了解箭头功能和的范围this,请参阅https://developer.mozilla.org/zh-
CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions的
“对此不分开”部分



 类似资料:
  • 问题内容: 我有一些代码,其结构类似于此 问题是它向我吐了一个错误。 解析错误:语法错误,意外的T_LNUMBER,预期的T_VARIABLE或’$’ 有关于如何在bbcode函数的preg_replace内调用embed_video的想法吗? 谢谢! 问题答案: 您可以在上使用“ e”修饰符(请参见模式修饰符) 告诉将第二个参数视为PHP代码。

  • 我缺少一个选项,如何使用从中获取函数中的索引号: 文档显示返回。有没有什么高雅的方法来达到我所需要的?

  • 我定义了一个名为marger的函数来查找两个参数(num1、num2)之间的较大数。现在,我想在另一个名为“最大”的函数中使用这个函数,这个函数获得一个数组并返回该数组的最大个数,但我被卡住了。有人能帮我吗?下面是我的代码:

  • 问题内容: 为什么下面的代码不打印任何内容: 我正在Python 3中执行上述代码。我想我缺少了一些非常基本的东西,但无法弄清楚。 问题答案: 返回iterator,直到您要求它之前,它不会处理元素。 将其变成列表以强制处理所有元素: 或将其长度设置为0以不产生列表(如果不需要地图输出): 但是请注意,对于任何以后的代码维护者而言,简单地使用循环都更具可读性:

  • 问题内容: 我需要在QueryDsl Native MySQL中运行以下查询。 上面的查询具有嵌套的3个mysql函数,例如cast,json_unquote和json_extract。在QueryDsl中,我为每个函数创建了单独的表达式,如下面的代码所示。 我必须创建更多数量的表达式,而不要创建更多的函数。为了降低复杂性,是否可以在单个表达式中调用多个函数? 问题答案: 我找到了问题的答案。 感

  • 问题内容: 我正在尝试使用jQuery mobile 1.4.3创建类似于iOS警报视图的弹出窗口。我需要从javascript事件中触发警告消息,例如带有OK按钮的确认消息,其中显示了对Web服务的ajax响应调用。 我的第一个问题是通过弹出窗口小部件传递数据,而我发现很多搜索都是不可能的。 我发现几乎可以满足我的代码需求: 问题是我需要不是通过单击按钮而是通过函数来​​调用此函数:类似于以下内