TypeError: Невозможно прочитать свойство 'onSelect' из неопределенного - PullRequest
0 голосов
/ 07 февраля 2019

Я создал компонент класса в реакции и мне нужно передать реквизиты в функции рендеринга при отображении, но я получаю следующую ошибку TypeError: Cannot read property 'onSelect' of undefined

Ниже мой компонент

class SelectLanguage extends Component {
    render() {
          let filterbrands = this.props.tvfilter.brand
          const filteredList = this.filterItems();

          if (filterbrands) {} else {}

          return (
              <div className="filter-options">
                  {filteredList &&
                      filteredList.map(item => (
                          <dl>
                              <dt className="mb-2">{item.title}</dt>
                              <input type="search" onChange={this.onSearchInputChange} className="search mb-2" placeholder="Search by Brand" />
                              {item.options.slice(0,this.state.itemsToShow).map(catname => (
                                  <dd
                                      key={catname.catgeory_name}
                                      className="mb-0"
                                  >
                                      <a href="#" onClick={props.onSelect.bind(null, item)}>{catname.catgeory_name}</a>
                                  </dd>
                              ))}
                          </dl>
                      ))}
                      <a className="btn btn-primary expandbutton" onClick={this.showMore}>{this.state.expanded ? (
                          <span>[ - less ]</span>
                          ) : (
                          <span>[ + more ]</span>
                          )
                      }</a>
              </div>
          );
      }
// PropTypes for SelectedLanguage
SelectLanguage.PropTypes = {
  selectedLanguage: PropTypes.string.isRequired,
  onSelect: PropTypes.func.isRequired
};
    }

Проблема в этом якоре <a href="#" onClick={props.onSelect.bind(null, item)}>{catname.catgeory_name}</a>

Примечание: это работает, если я использую функцию вместо класса, как это function SelectLanguage(props) {

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

Вам не хватает "этого" до props.onSelect;Вы можете определить свои реквизиты в верхней части рендера для удобства чтения;например, const {onSelect } = this.props

0 голосов
/ 07 февраля 2019

Пожалуйста, измените этот код:

<a href="#" onClick={props.onSelect.bind(null, item)}>{catname.catgeory_name}</a>

на

<a href="#" onClick={this.props.onSelect.bind(null, item)}>{catname.catgeory_name}</a>
0 голосов
/ 07 февраля 2019

Я полагаю, что вы пропустили "это", прежде чем установить свою функцию как <a href="#" onClick={this.props.onSelect.bind(null, item)}>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...