gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 05:47:34 25 4
gpt4 key购买 nike

在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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com