函数未定义,但事先声明它

时间:2018-04-09 18:25:29

标签: javascript reactjs

我有一个ToDo列表应用程序我正在创建学习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,则会显示为未定义。那是为什么?

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决此问题,例如将renderItem放在构造函数中,就像handleTodoPress一样,或者您可以使用属性初始值设定项:

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

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