Как передать дополнительные параметры в handleclick() на react.js?

Пользователь

от gage , в категории: JavaScript , год назад

Как передать дополнительные параметры в handleclick() на react.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от wilburn , год назад

@gage 

В React компонентах, обработчики событий, такие как onClick, принимают обычно один аргумент - объект события. Однако, можно передать дополнительные параметры в обработчик событий при вызове его функции через использование функций высшего порядка или стрелочных функций.


Вот несколько примеров:

Пример 1: Использование функции высшего порядка

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
function handleClick(extraParam) {
  // Обработчик события
  console.log(extraParam);
}

function MyComponent() {
  const extraParam = "someValue";

  return (
    <button onClick={() => handleClick(extraParam)}>
      Click me
    </button>
  );
}


В этом примере мы определяем обработчик события handleClick с одним параметром extraParam. Затем мы передаем extraParam в обработчик события, используя функцию высшего порядка. В данном случае мы используем стрелочную функцию для вызова handleClick с параметром extraParam.

Пример 2: Использование метода bind()

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    
    this.extraParam = "someValue";
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick(event) {
    console.log(this.extraParam);
  }

  render() {
    return (
      <button onClick={this.handleClick}>
        Click me
      </button>
    );
  }
}


В этом примере мы определяем обработчик события handleClick в методе класса MyComponent. Мы передаем this.handleClick в onClick, а затем используем bind() для связывания this с компонентом и передачи параметра extraParam в обработчик события.

Пример 3: Использование каррирования

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
function handleClick(extraParam) {
  return function(event) {
    console.log(extraParam);
  }
}

function MyComponent() {
  const extraParam = "someValue";

  return (
    <button onClick={handleClick(extraParam)}>
      Click me
    </button>
  );
}


В этом примере мы определяем обработчик события handleClick как функцию, которая возвращает другую функцию, которая будет вызываться при клике на кнопке. Мы передаем extraParam в handleClick, который используется во внутренней функции, которую мы передаем в onClick.