javascript - 如何将变量传递给函数引用?

标签 javascript reactjs function react-native

在react native中,当你有函数需要在渲染时运行并且必须传递变量时,大多数人建议应该使用

onPress{() => this.functionName(variable)}

但是,当处理大型列表和复杂组件时,您必须优化代码。为 flatList 中的每个 renderItem 创建一个新函数会降低性能,有时会大大降低性能,具体取决于您为每个 renderItem 创建的函数数量。因此建议从在渲染时创建函数转变为使用函数引用。像这样:

functionName = () => {
   //code
}

onPress={this.functionName}

但是我一直无法弄清楚如何使用此方法将变量传递给函数。

如果你这样做:

onPress={this.functionName(variable}

它只会在组件加载时立即运行该函数。

有什么想法吗?

最佳答案

我强烈建议使用柯里化(Currying) 来传递参数。

Currying 是将一个函数分成几个函数的过程,每个函数都接受一个参数。在本例中,此方法运行良好的原因是,当您在 render 方法上调用函数时,传递的参数自动为 event,因此要传递第二个参数,函数将必须curried 才能接收下一个参数。

你可以这样定义你的函数:

functionName = variable => event => {
 //code 
}

然后您可以继续在渲染方法中调用您的函数:

onPress={this.functionName(variable)}

如果您想了解更多,这是一篇很棒的文章: Currying In JS

这个方法非常优雅和有用,因为它不需要将函数调用包装在 React 的 render 方法中的匿名函数中。

在任何其他情况下,您也可以按照官方 React Docs 的建议进行操作: React Docs on passing arguments to event handlers

祝你好运!

关于javascript - 如何将变量传递给函数引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50630902/

相关文章:

javascript - 关闭弹出窗口时如何调用函数

reactjs - 在 MUI 数据网格中动态更改单元格值

javascript - 展开/折叠表格行 Javascript 工作错误

javascript - 使用 Javascript 获取所有 html 标签

Javascript更改div中跨度的文本

javascript - 在React中使用map渲染列表项

javascript - 如何在 react router dom v4 中获取组件中的参数?

javascript - 再次: JS functions and objects

Javascript if/else 语句未按预期工作

c++ - 我在 C++ 中遇到问题从函数中的用户输入,添加到数组,并打印该数组