@dimoff66
Кратко о себе: Я есть

Как подменить обработчик событий при наследовании в React?

Допустим у нас есть компонент

class Dropdown1 extends React.component {
  
  onClickHandler(e) {
    console.log(e.target.innerText)  
  }
  
  render() {
    return (
      <ul>
        {[1, 2, 3].map((number, i) => 
          <li key={i} onClick={this.onClickHandler}>{number}</li>)
        }
      </ul>
    )}
}


Я хочу сделать дочерний компонент, который
а) в начало списка добавлял бы <li>0</li>
б) Подменял бы обработчик onClickHandler на свой

Как это сделать используя наследование и/или композицию не меняя родительский компонент?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега React
Не надо наследования. Делайте обёртку для основного компонента, которая будет передавать новый обработчик в качестве параметра. А основной компонент будет устанавливать переданный обработчик, или, если его нет, собственный. Например.
Ответ написан
rockon404
@rockon404 Куратор тега React
Frontend Developer
Просто передавайте данные и обработчик в компонент в виде свойств:
<DropDown onClickHandler={yourHandler} data={yourData} />

class Dropdown extends React.component {  
  render() {
    const { data, onClickHandler } = this.props;

    return (
      <ul>
        {data.map((number, i) => 
          <li key={i} onClick={onClickHandler}>{number}</li>
        )}
      </ul>
    )}
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы