繁体   English   中英

在props中调用回调函数

[英]Calling callback function in props

我对在元素的prop中调用callback有点困惑。

假设我在这里有一个按钮。

<Button
  onPress={() => { loadMore()}}
  title="Load More"
  backgroundColor='#0A55C4' />

之间有什么区别?

onPress={() => { this.loadMore()}}

onPress={this.loadMore()}

onPress={this.loadMore}

这些似乎都工作良好。 但我想知道它们之间是否有区别? 谢谢

onPress = {this.loadMore()}

这很可能是一个错误。 这意味着“立即调用loadMore,并将其结果作为对组件的支持”。 除非loadMore是产生其他功能的工厂,否则您可能不想这样做。

onPress = {this.loadMore}

这意味着“将负载更多地传递给组件”。 这往往是你想要的东西,但是当loadMore被调用时, this将是不确定的,除非你已经采取措施来解决这个问题。 例如,您可以在构造函数中绑定该函数,或将其创建为箭头函数。

onPress = {()=> {this.loadMore()}}

这意味着“创建一个新函数,并将其传递给组件”。 这是我针对先前案例提到的问题的可能解决方案之一。

它的缺点是每次调用render时都会创建一个新函数。 创建函数本身非常轻巧,但这确实意味着Button组件可能会将其旧的onPress道具与新的onPress道具进行比较,看到它们已更改,因此认为它需要重新渲染。 这种额外的重新渲染可能是性能方面的考虑。

这两个是相同的。 在反应中,无需将参数提供给没有参数的函数。 另外,这需要在构造函数中进行事件绑定。

onPress={this.loadMore()}
onPress={this.loadMore}

constructor() {
    this.loadMore = this.loadMore.bind(this);
}

但是,此语法不需要在构造函数中进行显式绑定。 您正在使用箭头功能。

onPress={() => { this.loadMore()}}

https://reactjs.org/docs/handling-events.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM