为什么会给出未定义的错误“ searchInput”

时间:2018-09-30 19:13:47

标签: javascript reactjs redux

我想寻找人。数据数组存储在redux存储中。我正在尝试执行搜索,但是发生错误。

Cannot read property 'searchInput' of undefined

可能是什么问题?

searchHandler(){
  console.log('findUser', this.searchInput.value);
  this.props.onFindPeople(this.searchInput.value)
}

我添加了一个示例code

2 个答案:

答案 0 :(得分:2)

您将this的上下文丢失给事件处理程序。
您可以使用arrow function(对this使用词法上下文):

  searchHandler = () => {
    console.log("findUser", this.searchInput.value);
    this.props.onFindPeople(this.searchInput.value);
  }

bind到这样的班级:

  constructor(props){
    super(props);
    this.searchHandler = this.searchHandler.bind(this);
  }

我们在constructor中这样做,因为它只会运行一次。

答案 1 :(得分:1)

您没有绑定功能。您需要将其绑定到如下所示的构造函数中。需要绑定才能访问此状态并访问状态,支持和修改状态。

请注意,您只需要在构造函数中绑定它,而不必在组件中的其他任何地方绑定

 constructor(props){
      super(props);
      this.searchHandler = this.searchHandler.bind(this);
 }

 searchHandler(){
     console.log('findUser', this.searchInput.value);
     this.props.onFindPeople(this.searchInput.value);
 }

或者您也可以使用箭头功能,如Sagiv在他的回答中所述。