我有一个正在创建的待办事项列表应用程序,用于学习React Native。当我尝试将clickhandler传递给子项时,它表示clickhandler函数未定义。

这是相关的代码。

constructor(props) {
  super(props)

  this.handleTodoPress = this.handleTodoPress.bind(this)
}
handleTodoPress (event) {
  console.warn('Press handled')
}
renderItem ({section, item}) {
  return <TodoItem onItemPress={this.handleTodoPress} title={item.title} description={item.description} completed={item.completed} />
}


如果我在handleTodoPress中登录renderItem,它将显示为未定义。这是为什么?

最佳答案

有几种方法可以解决此问题,例如将renderItemhandleTodoPress一样放在构造函数中,或者可以使用属性初始化程序:

renderItem  = ({section, item}) => {
  return <TodoItem onItemPress={this.handleTodoPress} title={item.title} description={item.description} completed={item.completed} />
}


现在,this将指向组件,并允许您使用this.handleTodoPress

09-25 15:06