(TypeError):无法读取未定义的属性“ props”

时间:2018-12-07 14:52:30

标签: javascript reactjs redux

我有一个名称为Search的组件,可负责所有搜索

代码:

class Search extends Component {
  state = {
    searchResult: []
  }

  async componentDidMount() {
    await this.props.searchAssets(this.props.match.params.name);
    this.handleState();
  }

  handleState() {
    this.setState({ searchResult: this.props.searchResult });
  }

  async handleSearch(e) {
    e.preventDefault();
    await this.props.searchAssets(e.target.q.value);
    this.handleState()
  }

  render() {
    return (
      <div className="content-block">
        <form onSubmit={this.handleSearch} className="search-form">
            <button>بحـث</button>
            <input type="text" defaultValue={this.props.match.params.name} name="q" placeholder="Est: Game of thrones, Vikings or Deadpool" />
        </form>
        <div className="display-latest">
          ***the div where search results are shown***
        </div>
      </div>
    )
  }
}

,它工作得很好,直到我尝试在页面上添加另一个搜索表单为止,我试图使它重用来自redux的操作,但它一直给我这个错误

  

(TypeError):无法读取未定义的属性“ props”

即使我尝试使用构造函数并将其绑定。

如果还有一种更好的方法来触发搜索而不加载页面,我也很乐意做笔记。 :)

1 个答案:

答案 0 :(得分:2)

函数handleStatehandleSearch缺少对此的引用。您可以通过以下两种方式获得参考:

  1. 如果您使用的情况是transform-class-properties,则可以将功能更改为箭头功能。
  2. 您必须使用以下方式将函数绑定到构造函数中:

    this.handleState = this.handleState.bind(this);

以上任何一种方法都可以在此处解决问题。